2013-07-25 38 views
11

Giải pháp phải khá đơn giản. Tôi đang cố gắng ngăn chặn biểu mẫu gửi đúng cách khi không tìm thấy giá trị nào trong các hộp nhập liệu. Dưới đây là JSFiddle tôi: http://jsfiddle.net/nArYa/7/Sử dụng jQuery để ngăn chặn việc gửi biểu mẫu khi các trường nhập trống

// Markup

<form action="" method="post" name="form" id="form"> 
<input type="text" placeholder="Your email*" name="email" id="email"> 
<input type="text" placeholder="Your name*" autocomplete=off name="name" id="user_name" 
<button type="submit" id="signup" value="Sign me up!">Sign Up</button> 
</form> 

// jQuery

if ($.trim($("#email, #user_name").val()) === "") { 
    $('#form').submit(function(e) { 
     e.preventDefault(); 
     alert('you did not fill out one of the fields'); 
    }) 
} 

Như bạn có thể nhìn thấy trong JSFiddle, vấn đề là khi tôi gõ cái gì đó vào cả hai lĩnh vực, các hộp cảnh báo STILL bật lên. Tôi đang gặp khó khăn trong việc tìm ra lý do. Có điều gì sai trong số của tôi nếu ($. Trim ($ "# email, #user_name"). Val()) === "")?

+1

Có bạn nên kiểm tra mỗi người riêng lẻ, nếu bạn chỉ sử dụng một bộ chọn, chỉ có một giá trị sẽ được trả lại –

+1

Từ các tài liệu: Lấy giá trị hiện tại của ** đầu tiên ** phần tử trong tập các phần tử phù hợp – Barmar

+1

Bạn cần đính kèm một hàm javascript vào nút gửi của bạn.

Trả lời

23

Hai điều, # 1 phiếu cho các lĩnh vực có sản phẩm nào nên xảy ra trên tất cả các nỗ lực của gửi, # 2, bạn cần phải kiểm tra từng lĩnh vực riêng

$('#form').submit(function() { 
    if ($.trim($("#email").val()) === "" || $.trim($("#user_name").val()) === "") { 
     alert('you did not fill out one of the fields'); 
     return false; 
    } 
}); 

Updated fiddle

+0

Nó hoạt động trực tiếp thực hiện mã nếu ($ .trim ($ ("# email"). Val()) === "" || $ .trim ($ ("# user_name").val()) === "") { cảnh báo ('bạn không điền vào một trong các trường'); trả về false; } – gnganpath

5

Séc của bạn xảy ra khi tải trang. Bạn cần phải kiểm tra trường khi biểu mẫu được gửi.

$('#form').submit(function(e) { 
    if ($.trim($("#email, #user_name").val()) === "") { 
     e.preventDefault(); 
     alert('you did not fill out one of the fields'); 
    } 
}); 
1

Đặt bạn câu lệnh if bên trong gọi lại:

$('#form').submit(function(e) { 
    if ($.trim($("#email").val()) === "" || $.trim($("#user_name").val())) { 
     e.preventDefault(); 
     alert('you did not fill out one of the fields'); 
     //You can return false here as well 
    } 
}); 
+0

Đây không phải là câu trả lời đúng, sẽ gửi ngay cả khi tên người dùng trống –

2

Tôi đoán rằng điều này sẽ giúp:

$('#form').submit(function(e) { 
    e.preventDefault(); 
    $("#email, #user_name").each(function(){ 
     if($.trim(this.value) == ""){ 
      alert('you did not fill out one of the fields'); 
     } else { 
      // Submit 
     } 
    }) 
}) 
2

HTML5: sử dụng cần trong thẻ đầu vào

  • Một thuộc tính boolean.

  • Trường nhập phải được điền trước gửi biểu mẫu.

  • Làm việc với văn bản, tìm kiếm, url, tel, email, mật khẩu, bộ chọn ngày, số, hộp kiểm, radio và tệp.

    <input required type='text'...> 
    

w3schools hint

+1

Điều gì về việc chỉ nhập không gian? Tôi chỉ sử dụng điều này nhưng nó vẫn gửi khi nhập không gian trống trong các lĩnh vực đầu vào. –

+1

Sau đó, bạn có thể sử dụng thuộc tính Pattern cùng với yêu cầu. http://www.felgall.com/html5r.htm sẽ giúp bạn. (không được trình duyệt Safari hỗ trợ) – Elnaz

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