2009-04-13 27 views
5

Hãy xem xét các hình thức sau đây:sự kiện JavaScript onBlur ngăn chặn hình thức HTML từ được gửi

<form action="/a" method="post"> 
    <input name="x" type="text" onblur="myonblur(e)" /> 
    <input name="y" type="text" /> 
    <input name="submit" type="submit" value="Submit" /> 
</form> 

Khi tập trung vào phần tử với tên "x" và ép sử dụng nút gửi, hỏa hoạn sự kiện onblur nhưng hình thức là không nộp. Có cách nào để làm cho nút gửi hoạt động như mong đợi nếu tôi có sự kiện onblur trong biểu mẫu của tôi không?

Trả lời

3

Cân nhắc tối ưu hóa phương thức onBlur() của bạn để mất ít thời gian hơn để chạy. Nếu biểu mẫu của bạn bị ngăn không cho gửi, có thể là do onBlur() quá dài và không cho trình duyệt thực hiện bất kỳ việc gì khác.

Bạn cũng có thể sử dụng phương thức onChange() thay vì onBlur(). Điều đó có thể làm việc tốt hơn cho bạn.

+0

Cảm ơn câu trả lời của bạn. Ý tưởng là để kiểm tra là tên người dùng tồn tại thông qua cuộc gọi AJAX, do đó, với onChange() nó sẽ khó khăn hơn nhiều để thực hiện, nếu có thể. Vì vậy, bạn có nghĩa là, không có cách nào cho tôi để sử dụng onBlur()? – Artem

+0

Bạn nên sử dụng các yêu cầu AJAX không đồng bộ chạy trong nền và không treo trình duyệt. Bằng cách sử dụng những onSubmit sẽ vẫn làm việc ngay cả khi yêu cầu ajax không hoàn thành. Thư viện Jquery không đồng bộ theo mặc định, hãy xem http://docs.jquery.com/Ajax/jQuery.ajax –

0

Hãy thử thêm

return true; 

sau khi gọi chức năng onBlur của bạn. Vấn đề bạn đang gặp phải có thể là do phòng ngừa "trả về false" của các trình xử lý sự kiện.

+0

No. Câu trả lời đầu tiên là chính xác. Tôi đã cố gắng tiếp cận của bạn và nó đã không giúp đỡ. – Artem

+0

OK. Nó chỉ là một khả năng mặc dù;) – BYK

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