2013-07-05 65 views

Trả lời

2

Bạn có thể sử dụng h5validate làm chính xác những gì bạn cần.

<script> 
$(document).ready(function() { 
    $('form').h5Validate(); 
}); 
</script> 
+0

họ dường như có khá một vài vấn đề với mã thử nghiệm của họ và tài liệu thiếu một số tính năng chúng ta cần như không có khoảng trắng hoặc ký tự – steve0nz

+0

bạn chỉ cần kiểm tra thuộc tính 'bắt buộc'? Có lẽ sẽ tốt hơn là biết thêm chi tiết và xây dựng một chi tiết phù hợp. –

4

Bạn có thể Shim nó chỉ đơn giản ...

if ($("<input />").prop("required") === undefined) { 
    $(document).on("submit", function(event) { 
     $(this) 
      .find("input, select, textarea") 
      .filter("[required]") 
      .filter(function() { return this.value; }) 
      .each(function() { 
       // Handle them. 
      }); 
    }); 
} 
+1

Mã của bạn thực sự chứa một lỗi, như '.filter (function() {return this.value;})' sẽ không chỉ bao gồm các trường biểu mẫu rỗng nhưng loại trừ tất cả các trường biểu mẫu trống, để bạn kết thúc với tất cả các trường được yêu cầu và có nội dung, thay vì tất cả các trường biểu mẫu bắt buộc thiếu nội dung. –

+0

@ S.B. Bạn đúng. Nếu đó là chống lại mục tiêu của bạn, bỏ qua dòng đó. – alex

+0

@alex Bạn không thể bỏ qua dòng đó và sau đó giải quyết vấn đề. Nó sẽ xử lý mọi trường "bắt buộc", thậm chí nó không trống. –

2

Tôi đã viết một plugin jQuery rất đơn giản cho việc này. Nó chỉ thêm xác nhận hợp lệ phía máy khách vào một biểu mẫu bằng cách sử dụng thuộc tính 'required'.

https://github.com/garyv/jQuery-Validation-plugin

Sau bao gồm các plugin, bạn có thể gọi thức validate() trong chức năng sẵn sàng tài liệu của jQuery hoặc ở phần cuối của phần nội dung html.

<script> 
    $(document).ready(function(){ 
    $('form').validate(); 
    }); 
</script> 
+0

khi bạn nói 2. Gọi $ ('form'). Validate(); làm thế nào để làm điều đó? chỉ cần thêm $ ('form'). validate(); ' bên trong trang? Tôi đã thử plugin của bạn nhưng tôi không thể làm cho nó hoạt động – Baig

+0

Tôi đã cập nhật nhận xét bằng một ví dụ. Đoán của tôi là bạn đang cố gắng gọi validate() trước khi bao gồm plugin hoặc trước phần tử

. JavaScript chạy rất tuần tự - vì vậy bạn phải bao gồm plugin và HTML trước khi sử dụng một trong hai mã đó trong mã. Đây là một phần cơ bản về cách thức hoạt động của HTML và JavaScript. Chức năng sẵn sàng của tài liệu jQuery là một cách phổ biến để xử lý điều này - http://api.jquery.com/ready/ - tất cả về cơ bản là chạy mã chậm trễ cho đến sau khi tải trang web, để nó có thể tham chiếu bất kỳ HTML nào trên trang . – garyv

+0

Không hoạt động trong IE8, điểm của việc sử dụng này là gì? IE9 trở lên hỗ trợ xác thực HTML5. – Piero

7

này hoạt động mà không cần bất kỳ plugin (chỉ JQuery):

<script> 

    // fix for IE < 11 
    if ($("<input />").prop("required") === undefined) { 
     $(document).on("submit", function(e) { 
      $(this) 
        .find("input, select, textarea") 
        .filter("[required]") 
        .filter(function() { return this.value == ''; }) 
        .each(function() { 
         e.preventDefault(); 
         $(this).css({ "border-color":"red" }); 
         alert($(this).prev('label').html() + " is required!"); 
        }); 
     }); 

    } 
</script> 
+0

Bạn sẽ thay đổi điều này như thế nào để kiểm tra mỗi lần gửi được nhấp? Để thoát khỏi đường viền màu đỏ nếu trường được điền. – Ben

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