2010-01-24 31 views
5

Tôi có một số xác thực JavaScript phía máy khách trên biểu mẫu. Nó hoạt động tuyệt vời. Nhưng tôi muốn thích ứng với những người dùng đã tắt JavaScript. Xác nhận của tôi không chạy từ thuộc tính onsubmit của biểu mẫu, nó là một trình xử lý sự kiện được gắn với một nút bình thường trong biểu mẫu. Vì vậy, các nút mà đá ra khỏi xác nhận và nộp không phải là thực sự là một gửi, nó chỉ cần gõ = "nút":Nhấn nút gửi sự kiện/nút Gửi chỉ khi javascript bị tắt

<input type="button" value="Ok" class="okbtn"> 

Sau đó, tôi đăng ký một event handler cho sự kiện click của nó mà không xác nhận của tôi. Nó gửi nếu mọi thứ đều trôi qua:

function clickHandler(event){ 
    thisForm = event.data.caller 
    var valid = submitValidation(thisForm); 
    if (valid == true){ 
     thisForm.submit(); 
    } else{ 
     } 
} 

Vấn đề của tôi là nếu người dùng đã tắt JS, không có cách nào để gửi biểu mẫu. Tôi có thể làm cho nút type="submit", hoạt động cho người dùng đã tắt JS, nhưng sau đó nó sẽ * luôn gửi biểu mẫu và bỏ qua xác thực cho người dùng đã bật JS. (Việc xác nhận sẽ chạy nhưng nó sẽ gửi anyway). Nếu tôi thực hiện nút type="submit" tôi có thể chặn sự kiện gửi nếu được nhấp không? Tôi đang sử dụng JQuery, có thể JQuery ngăn chặn việc gửi? Tôi muốn xác thực của mình để xử lý cho dù nó được gửi đi.

Trả lời

12

Bạn có thể ngăn chặn nộp nhấp chuột bằng cách làm một cái gì đó như:

$('input[type=submit]').bind('click', function(e) { 
    e.preventDefault() // prevents the form from being submitted 
    clickHandler(); // the custom submit action 
}); 

Hoặc, bạn có thể ngăn chặn các hình thức thực tế nộp như thế này:

$('form').bind('submit', function(e) { 
    e.preventDefault(); 
    // etc 
}); 
+0

ngọt ngào. Thay đổi một dòng :) – Purrell

3

Bạn có thể chặn gửi bằng cách đặt trình xử lý onsubmit trong phần tử form và sau đó nếu nó không trả về xác thực sai.

Vì vậy, bạn sẽ trả về true nếu xác thực thành công hoặc giả nếu không thành công, thay vì gọi số thisForm.submit().

3

Thay đổi nút để một bình thường nút và ràng buộc nộp kiểm tra xác thực cho sự kiện submit() trên biểu mẫu.

$("form").submit(function() { 
    if (!submitValidation()) { 
    return false; 
    } 
}); 

Từ các tài liệu:

Sự kiện submit được gửi đến một yếu tố khi người dùng đang cố gắng submit một form. Nó chỉ có thể được đính kèm vào các phần tử. Biểu mẫu có thể được gửi bằng cách nhấp vào rõ ràng <input type="submit">, <input type="image"> hoặc <button type="submit"> hoặc bằng cách nhấn Enter khi yếu tố biểu mẫu nhất định đã tập trung.

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