2011-10-31 35 views
55

Làm cách nào để xác thực các đầu vào bị ẩn và không hiển thị đầu vào văn bản có thể nhìn thấy bằng plugin Xác thực biểu mẫu jQuery? Vấn đề là, tôi đang sử dụng plugin tự động đề xuất, tạo ra đầu vào bị ẩn cho các mục đã chọn:Plugin Xác thực jQuery - Xác thực các đầu vào bị ẩn và không hiển thị?

<input id="hiddenInput" type="hidden" name="something" value="1" /> 

Tôi có 2 đầu vào như thế này (cả hai chỉ cho phép 1 mục), mà tôi muốn xác nhận và hiển thị lỗi trong parent <td>. Đây là những gì tôi đã nhận được cho đến nay, nhưng nó không hiển thị lỗi hoặc gửi một biểu mẫu, nếu giá trị thực sự là một số.

$("#form1").validate({ 
     rules: { 
      something: { 
       number:true, 
       min:1, 
       required:true 
      } 
     } 
     }) 
+0

Bạn nên cân nhắc chọn một trong các bài viết là đã trả lời. –

+1

Xem thêm http://stackoverflow.com/questions/8466643/jquery-validate-enable-validation-for-hidden-fields. – goodeye

Trả lời

112

Để cho phép xác thực các phần tử ẩn, ghi đè bỏ qua và đặt thành chuỗi trống:

$("#form1").validate({ 
    ignore: "", 
    rules: { 
     something: { 
      number:true, 
      min:1, 
      required:true 
     } 
    } 
}); 
+4

câu trả lời này vẫn hợp lệ? Bất kỳ cài đặt "bỏ qua" nào tôi sử dụng biểu mẫu sẽ được gửi ngay cả khi không hợp lệ. Tôi đã thử bỏ qua: [], bỏ qua: "", bỏ qua: ': hidden: not (#id_myimput). Luôn luôn kết quả tương tự: Tôi thấy thông báo lỗi trên các trường, nhưng biểu mẫu vẫn được gửi. Việc xóa mọi cài đặt "bỏ qua" sẽ khắc phục xác thực. – bluantinoo

+0

Bạn đã thử cái này chưa? vì điều này gây ra lỗi khi tôi sử dụng bỏ qua: "". 'Uncaught TypeError: Không thể đọc cài đặt thuộc tính 'của undefined' –

23

Bạn có thể sử dụng tùy chọn ignore như thế này:

$("#form1").validate({ 
    ignore: "input[type='text']:hidden", 
    rules: { 
     something: { 
      number:true, 
      min:1, 
      required:true 
     } 
    } 
}); 

Giá trị mặc định của ignore lựa chọn là :hidden mà bỏ qua tất cả các lĩnh vực tiềm ẩn và các lĩnh vực không nhìn thấy được (display: none vv)

+2

Vẫn không xác thực. Tôi thêm quy tắc vào đầu vào bị ẩn và đảm bảo quy tắc không hợp lệ nhưng vẫn gửi biểu mẫu và không có lỗi nào được hiển thị! – ItsGreg

+0

@EmreErkan Liên kết tài liệu được đặt ngay bây giờ. –

12

Nếu các câu trả lời khác không hoạt động cho bạn, hãy thử thay vào đó. Nó loại bỏ tất cả bỏ qua đối với hình thức, vì vậy nó sẽ xác nhận tất cả mọi thứ bao gồm cả lĩnh vực ẩn:

$.data($('form')[0], 'validator').settings.ignore = ""; 

Để khôi phục lại các thiết lập để bỏ qua lĩnh vực ẩn, sử dụng một cái gì đó như thế này:

$.data($('form')[0], 'validator').settings.ignore = "input[type='text']:hidden"; 

Bạn cũng có thể sử dụng trên mã để đọc lại giá trị hiện tại.

+0

Tôi đã thử nó và nó không làm việc cho tôi. Nó cho tôi 'TypeError: $ .data (...) là undefined', tôi đã kiểm tra' $ 'và nó là đối tượng jQuery thích hợp. Đây là câu trả lời thay thế http://stackoverflow.com/a/8565769/1027198. –

+3

Rất kỳ quặc, giải pháp của bạn là * chỉ * giải pháp có hiệu quả đối với tôi - không có câu trả lời nào khác được thực hiện. – Nathan

3

Một cách khác để xác nhận đầu vào ẩn là thế này:

$("#form1").validate({ 
     ignore: "not:hidden", 
     rules: { 
      something: { 
       number:true, 
       min:1, 
       required:true 
      } 
     } 
}); 
Các vấn đề liên quan