2013-09-26 48 views
5

Tôi đang sử dụng jQuery validation plugin, để xác thực biểu mẫu của tôi. Tuy nhiên, tôi không thể đặt xác thực cho số div.Đặt xác thực cho div bằng cách sử dụng xác thực jQuery

Dưới đây là những gì tôi đã cố gắng cho đến nay

HTML:

<form id="form"> 
    <div id="location" name="location"></div> 
</form> 

JS:

$('#form').validate({ 
      rules: { 
      isLocationEmpty: true; 
      } 
}); 

CustomValidation Mehthod:

$.validator.addMethod('isLocationEmpty', function (value, element) {   
    var loc = $('#location').text(); 
    return (loc != "") 
}, 'REQUIRED.'); 

Tôi chưa làm điều này trước đây, vui lòng cung cấp đề xuất của bạn.

+2

Tại sao các bạn cố gắng sử dụng một div có thay của một hình thức đầu vào thực sự? – andi

+0

Có thể do nhà phát triển không nghĩ rằng người dùng sẽ cố gắng xác thực div. – user1

+0

@andi Nó là một tác phẩm hiện tại của bạn tôi. nơi biểu mẫu có cả hai yếu tố đầu vào và vài div như thế này. Do đó tôi đã thử điều này. – Praveen

Trả lời

8

Trích OP:.

"Tôi đang sử dụng jQuery Validation plugin cho hình thức xác nhận của tôi .... Tuy nhiên tôi không thể thiết lập các xác nhận cho một div tôi thiên đường chưa thực hiện việc này trước đây, vui lòng cung cấp đề xuất của bạn. "

Bạn sẽ không bao giờ có thể sử dụng plugin jQuery Validate để xác thực div. Đánh dấu HTML thích hợp cho đầu vào dữ liệu là sử dụng phần tử đầu vào.

Plugin này sẽ chỉ làm việc trên các loại sau đây của các yếu tố đầu vào dữ liệu (mỗi phải có một name thuộc tính duy nhất), mà cũng phải nằm trong một container form yếu tố:

<form> 

    <!-- // Input - Also including the various HTML5 input types 
    // type = text, password, radio, checkbox, file, etc. --> 
    <input type="text" name="something" /> 

    <!-- Hidden Input - 'ignore: []' must be defined in the options --> 
    <input type="hidden" name="hide" /> 

    <!-- Select Dropdown --> 
    <select name="foobar"> ... </select> 

    <!-- Text Area Box --> 
    <textarea name="barfoo"></textarea> 

</form> 

Xem thêm trang "tham chiếu" trong tài liệu: http://jqueryvalidation.org/reference/


Dường như OP không thể thay đổi HTML . Đây là một giải pháp rất xấu.

Mã có thể được sử dụng để sao chép văn bản của div thành thành phần type="hidden", trong đó yếu tố ẩn sau đó có thể được xác thực bằng plugin. Mã này có thể được gọi bất cứ lúc nào hoặc đặt bên trong một event handler để bắn vào mờ hoặc thay đổi:

$("#hidden").val($('#div').text()); 

Đây là jQuery tương ứng:

$('#form').validate({ 
    ignore: [], // <-- validate hidden elements 
    // other options, rules, and callbacks, 
}); 
+0

Cảm ơn ngắn gọn. Có cách nào khác, tương tự như plugin này không? – Praveen

+0

@ user1671639, tôi không thấy lý do tại sao bạn không thể thay đổi các phần tử 'div' này thành các yếu tố đầu vào dữ liệu thích hợp. Bất kể lý do gì, cách giải quyết duy nhất tôi có thể tưởng tượng là sử dụng jQuery để sao chép dữ liệu từ 'div' vào thành phần' type = "hidden" 'trên một số sự kiện như' change' hoặc 'blur'. Sau đó, nhắm mục tiêu phần tử ẩn này bằng jQuery Validate. – Sparky

+0

Vì nó là một dự án hiện có, tôi không thể làm điều này. Tuy nhiên đây là những gì tôi đã thử cho đến nay http://jsfiddle.net/jZVA2/34/. Có vẻ như đây là ý của bạn cuối cùng? Xin vui lòng cho tôi biết nếu nó là một cách chính xác? – Praveen

-2

Tôi không chắc chắn lý do tại sao bạn đang cố gắng xác thực div nhưng tôi đề xuất biến nó thành vùng văn bản. Trong trường hợp bạn cần làm cho người dùng không thể chỉnh sửa, hãy thêm thuộc tính chỉ đọc.

<form id="form"> 
    <textarea id="location" name="location" readonly></textarea> 
</form> 
+1

Nếu đó là 'chỉ đọc', thì không cần phải xác thực nó. – Sparky

+2

Tại sao không? Có lẽ nội dung của div của anh ta thay đổi động với javascript và anh ấy muốn chắc chắn rằng nó có cái gì đó trong quá trình xác nhận. Hãy để tôi nhắc nhở bạn rằng một div là ´readonly 'cũng như vậy suy nghĩ của bạn sẽ áp dụng cho nó là tốt. Chúng tôi không biết tại sao cần phải đảm bảo nó có thứ gì đó. – dajavax

+0

Toàn bộ điểm xác thực _client_-side là dành cho trải nghiệm ** của người dùng **. Nếu người dùng không thể tương tác với dữ liệu, thì bạn không cần xác thực nó ... nói cách khác, tại sao bạn sẽ cung cấp thông báo cảnh báo cho người dùng về dữ liệu mà anh ta không nhập và không thể kiểm soát. Không có nghĩa lý gì. – Sparky

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