2013-02-23 76 views
7

Tôi có điều này chỉ đơn giản là mã:Javascript: onchange sự kiện không cháy, khi giá trị được thay đổi trong onkeyup kiện

<body> 
     <input type="text" onkeyup="this.value = (new Date()).getSeconds()" onchange="alert(1)" /> 
    </body> 

Tôi dont't biết tại sao giá trị textbox đã thay đổi khi tôi bấm phím nhưng sự kiện onchange không cháy. Làm cách nào để tôi có thể kích hoạt sự kiện onchange?

+0

sử dụng oninput cho mọi thứ exept tức là –

+0

Sử dụng: 'onkeyup =" this.value = (new Date()). GetSeconds(); this.onchange(); "' – Ian

+0

@Barmar, Ian: Tôi không cần sự kiện onchange xảy ra ngay sau giá trị của thay đổi hộp văn bản trong hàm onkeyup. Tôi cần cảnh báo (1) hiển thị khi tôi nhấp vào trang để rời khỏi hộp văn bản. – hieund

Trả lời

1

onchange sẽ kích hoạt khi bạn rời khỏi tiêu điểm (nếu bạn thực hiện bất kỳ thay đổi nào). Hành vi này chỉ xảy ra với các loại đầu vào là texttextarea vì javascript không biết khi bạn nhập xong.

Tôi không biết tại sao có hộp kiểm trong mã, nhưng bất kỳ điều gì. Trân trọng, tôi không thể nói cho bạn biết tại sao, nhưng vấn đề là thay đổi giá trị động trên đầu vào (phỏng đoán rằng thay đổi không được thực hiện bởi người dùng, nhưng tôi thực sự không biết), nếu bạn loại bỏ các mã bên trong onkeyup nó sẽ làm việc. Bất cứ điều gì, nếu những gì bạn muốn là để thực hiện một số mã khi đầu vào mất tập trung, bạn có thể sử dụng onblur thay vào đó, là chính xác hơn trong trường hợp đó.

+0

giải thích cho downvotes? Tôi muốn điều chỉnh với điều đó, nếu không tôi sẽ ở lại sai. – martriay

+0

"tại sao bạn lại làm điều đó?" : Bởi vì tôi phải lấy giá trị đầu vào khi khóa, nếu nó không hợp lệ, tôi sẽ sửa nó và trả lại giá trị hợp lệ. Sau khi tôi thay đổi giá trị đầu vào, tôi sẽ làm một cái gì đó khác trong sự kiện onchange. Nhưng, trong mã SIMPLE này, onchange không kích hoạt ngay cả khi tôi nhấp vào trang để rời khỏi tiêu điểm hộp văn bản. (bạn có thể sao chép nó vào notepad, lưu dưới dạng html để kiểm tra) – hieund

+0

Tôi không biết tại sao có một hộp kiểm trong mã, nhưng bất cứ điều gì. Trân trọng, tôi không thể nói cho bạn biết tại sao, nhưng vấn đề là thay đổi giá trị động trên đầu vào (phỏng đoán rằng thay đổi không được thực hiện bởi người dùng, nhưng tôi thực sự không biết), nếu bạn loại bỏ mã bên trong 'onkeyup' nó sẽ hoạt động. Bất cứ điều gì, nếu những gì bạn muốn là để thực hiện một số mã khi đầu vào mất tập trung, bạn có thể sử dụng 'onblur' thay vào đó, là chính xác hơn trong trường hợp đó. – martriay

Các vấn đề liên quan