2011-02-08 34 views
30

Tôi cố gắng để sử dụng validate plugin trên một div như trong câu trả lời cho this question:jQuery xác nhận plugin trên DIV

<script type="text/javascript"> 
    $("#pseudoForm").validate({ 
    onfocusout:true, 
    rules:{ 
     first_name:"required", 
     last_name:"required" 
    } 
    }); 
</script> 
<!-- whatever --> 
<div id="pseudoForm"> 
    <input type="text" name="first_name"/> 
    <input type="text" name="last_name"/> 
</div> 

Tôi có tất cả trong một biểu mẫu.

Tôi đang gặp phải một loạt lỗi khác nhau trên các trình duyệt khác nhau.

  • Firefox: validator trong không xác định
  • IE8: 'Cài đặt' là null hoặc không phải là một đối tượng
  • Chrome: Không thể đọc thuộc 'Cài đặt' không xác định

Bất kỳ trợ giúp nào được đánh giá cao!

Trả lời

51

Đây không phải là câu trả lời mà bạn muốn nghe, nhưng câu trả lời khác là không chính xác (nó có thể là đúng khi nó đã được đăng, nhưng đã có một số lớn Plugin xác nhận jQuery thay đổi kể từ đó).

The validation plugin hiện đang được thiết kế để hoạt động trên <form>chỉ trên <form>. Bạn cũng có thể lưu ý rằng all of the plugin documentation tham chiếu biểu mẫu, không phải bất kỳ vùng chứa chung nào khác.

Plugin bản thân theo dõi validator.currentForm trong nội bộ, trong đó đề cập đến this của thông qua công cụ Chọn, nhận .elements, vv tắt mà ... nó thực sự sẽ không làm việc bất kỳ cách nào khác, không phải là cách phiên bản hiện tại của văn bản .

Giải pháp tổng thể/phương pháp thay thế tại đây: gọi .validate() trên phần tử <form> (trình bao bọc jQuery trực tiếp) chứ không phải bất kỳ vùng chứa nào khác. Nếu bạn cần chia <form> sử dụng các phần tử <fieldset>, có thể sử dụng tùy chọn ignore: ':hidden' trong .validate() nếu bạn không muốn xác thực các trường nhập không hiển thị cho người dùng.

+1

đây là câu trả lời tôi cần, cảm ơn. Tôi chỉ cần một từ cuối cùng về chủ đề này. Bạn có thể cung cấp liên kết đến câu hỏi cho thấy giải pháp thay thế hoặc sao chép dán mẫu vào đây hay có thể đó là một câu hỏi khác? :) – JohnIdol

+0

Điều gì sẽ xảy ra nếu tôi không gửi biểu mẫu và thay vào đó có một nút đơn giản (không đăng biểu mẫu) và tôi đã xác thực rõ ràng bằng cách sử dụng .validate() khi nhấp vào nút đó? Điều đó có thể không? – IsmailS

+0

@Ismail - Trong trường hợp đó, bạn vẫn sử dụng '.validate()' để bắt đầu xác thực, sau đó sử dụng '.valid()' để kiểm tra xem biểu mẫu có hợp lệ theo các quy tắc bạn thiết lập không. Bạn có thể đọc thêm về chức năng đó tại đây: http://docs.jquery.com/Plugins/Validation/valid –

1

Bạn đang thiếu khung đóng. Hãy thử điều này thay vì:

$("#pseudoForm").validate({ 
    onfocusout:true, 
    rules:{ 
     first_name:"required", 
     last_name:"required" 
    } 
}); 
+0

xin lỗi dấu ngoặc đơn bị thiếu trong câu hỏi nhưng trong mã của tôi, đã được chỉnh sửa ngay bây giờ. cảm ơn – JohnIdol

1

Bạn có thể nhận được lỗi tương tự nếu bạn chọn hình thức bởi lớp

$(".form_class").validate(...

thay vì bằng ID $("#form_id").validate(...

hoặc tên thẻ $("form").validate(...

-3

Trong các tùy chọn cho validate() , đặt onsubmit: !$.browser.msie

0

Tôi biết nó là chủ đề rất cũ nhưng nó có thể giúp ai đó đến với trang này.

Vui lòng kiểm tra [1]: http://encosia.com/asp-net-webforms-validation-groups-with-jquery-validation/ trang web rất hữu ích và nó chứng minh những gì câu trả lời thực tế xứng đáng câu hỏi này

[Nhóm Validation] [1]

+1

Lưu ý rằng [câu trả lời chỉ có liên kết] (http://meta.stackoverflow.com/tags/link-only-answers/info) không được khuyến khích, SO câu trả lời nên là điểm cuối của một tìm kiếm cho một giải pháp (so với một điểm dừng khác của tài liệu tham khảo, mà có xu hướng để có được cũ theo thời gian). Vui lòng xem xét thêm bản tóm tắt độc lập tại đây, giữ liên kết dưới dạng tham chiếu. – kleopatra

+0

Ok Tôi sẽ quay lại lần sau – alhashmiya

1

mở jquery.validate.js hoặc jquery.validate.min.js và tìm (Ctrl + F) " nhãn "và replaceAll với bạn thẻ được yêu cầu của bạn:

Ví dụ: div

sau đó thực hiện xác thực.

+0

Có vẻ lạ khi bạn phải sửa đổi thư viện jquery ... – Robert

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