2011-07-25 37 views
6

Tôi không thể sử dụng jsfiddle cực kỳ đơn giản này để làm việc. Nó chỉ cần cảnh báo kiểm tra khi nút được nhấp. Tôi đang thiếu gì ở đây?câu hỏi jsfiddle

http://jsfiddle.net/u9nG6/2/

+0

Giải thích tuyệt vời tất cả, cảm ơn bạn. – Kory

+0

Nhận xét đơn giản: Thay vì ràng buộc 'click', bạn nên bẫy sự kiện' submit'! –

Trả lời

8

Bạn phải thay đổi phương thức tải thành không quấn (đầu).

Có điều gì đó liên quan đến cách JavaScript được tải và khi chữ ký phương thức được đọc. http://jsfiddle.net/u9nG6/11/

+1

Để cụ thể: 'onDomReady' kết thúc tốt chức năng và nó chỉ tồn tại trong phạm vi đó. 'No wrap' có nghĩa là hàm tồn tại trong phạm vi toàn cục. –

0

Bạn đang sử dụng jquery + ondomready. Điều này có nghĩa bất kỳ javascript bạn viết được đặt trong

$(function() { 

}); 

điều này dẫn đến một vấn đề phạm vi. Bạn có thể thử những điều sau để thay thế.

window.validateForm = function() { 
} 
2

khuôn khổ jQuery được chọn để tải onDomReady nên chức năng của bạn được gói trong jQuery chức năng ẩn danh $(function(){ }); và không nhìn thấy được. Hoặc thay đổi jQuery để tải dưới dạng no wrap (head) hoặc xác định hàm của bạn ở phạm vi toàn cục.

2

Xem here.

Bạn cần xác định hàm validateForm ở phạm vi toàn cầu để có thể sử dụng nó trong HTML như vậy. Nếu không, bạn đã định nghĩa nó là hàm trong phạm vi phạm vi của sự kiện onDomReady, không thể truy cập được bên ngoài phạm vi đó.

A "jQuery-ish" cách tiếp cận hơn sẽ sử dụng jQuery để xử lý các sự kiện click như thế này:

$("#id_btnSubmit").click(validateForm); 

Xem here cho một ví dụ về đề nghị đó.