2012-02-08 32 views
5

Ok Tôi có một biểu mẫu có xác thực jquery hoạt động nhưng tôi muốn thực hiện thêm một bước nữa. Nó xác nhận bằng cách sử dụng một plug in nhưng chỉ khi gửi. Tôi tự hỏi nếu có một cách để làm cho nó để xác nhận trên blur vì vậy một người không phải chờ đợi cho đến khi họ nhấn gửi để biết nếu họ có một lỗi.JQuery - Xác nhận Mẫu - Onblur

tôi đã tải plugin này:

http://docs.jquery.com/Plugins/Validation

tôi bao gồm các js cắm vào tập tin ở phía trên cùng của trang và dưới mà tôi có js:

<script> 
    $(document).ready(function(){ 
    $("#formid").validate(); 
    }); 
    </script> 

Các xác nhận hoạt động tốt khi tôi gửi biểu mẫu. Tôi chỉ tự hỏi những gì tôi cần phải thêm vào điều này để cho nó để xác nhận mỗi lĩnh vực trên blur.

Nếu bạn cần phải xem js file bạn có thể nhìn vào nó hoặc tải về tại đây

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

Cũng tại liên kết phía dưới cùng của trang có một loạt các ý kiến. Một số trong những ý kiến ​​tham khảo thiết lập blur tôi chỉ không hiểu làm thế nào để làm điều đó. Cảm ơn bạn đã giúp đỡ.

Trả lời

0
<script> 
    $(document).ready(function(){ 
    $("#formid input, #formid select, #formid textarea").blur(function() { $('#formid').validate(); }); 
    }); 
</script> 
+0

Bạn có thể thêm xác thực ở cấp trường nếu plugin của bạn cho phép: thay cho '$ ('# formid'). Validate();' bạn có thể sử dụng '$ (this) .validate();' –

3

Bạn có thể sử dụng phương thức 'biểu mẫu' của trình xác thực, xem documentation.

này gây nên hình thức xác nhận:

$('#formid').validate().form(); 

Nếu bạn muốn nó trên mờ bạn có thể sử dụng này:

$('#formid :input').blur(function() { 
    $('#formid').validate().form(); 
}); 
+0

Nếu điều này làm việc cho bạn, OP, hãy đánh dấu nó là câu trả lời. – Kehlan

+0

Tôi không nghĩ rằng điều này là rất tốt - bạn đang mang một khẩu súng ngắn đến một cuộc chiến dao :) '$ .validate()' có một chút công bằng, và thực sự nên được gọi * một lần * trên 'document.ready '. 'validatorObj.element ()' là hàm đúng. – Ryley

0

Bạn nên thiết lập onfocusout option true (cuộn xuống để xem nó)

$("#formid").validate({ 
    rules: { 
     // simple rule, converted to {required:true} 
     required: "required", 
    }, 
    onfocusout: true 
}); 
+0

Cảm ơn bạn đã đề xuất. Tôi đã thử và vẫn chỉ xác thực khi gửi. Không bị mờ hoặc không tập trung. Bất cứ một đề nghị nào khác? Cảm ơn. – user982853

+0

Thật vậy, điều đó không hoạt động như bạn mong đợi - nó buộc xác thực trên ** trường không hợp lệ **, tức là sau lần gửi không hợp lệ đầu tiên và đúng là giá trị mặc định. – Ryley

6

Cách tốt nhất tôi có thể thấy là sử dụng $.validate.element(selector) trong sự kiện mờ cho eac yếu tố h bạn muốn hành vi này cho:

var v = $('#formid').validate(); 

Sau đó, các sự kiện thiết lập mờ:

$('#firstName').blur(function(){ 
    v.element('#firstName'); 
}); 

Nhìn thấy nó trong hành động ở đây: http://jsfiddle.net/ryleyb/brUVZ/

2

Phiên bản hiện tại của các plugin có chức năng gọi là 'validateOnBlur 'sẽ làm những gì bạn đang hỏi.

Mã của bạn sẽ giống như thế này nếu bạn đã áp dụng id của #formid vào biểu mẫu.

<script> 
    $('#formid').validateOnBlur(); 
</script> 

Đối với một số tài liệu rắn trên đầu này đến trang github của mình - https://github.com/victorjonsson/jQuery-Form-Validator

+0

Plugin này thực sự khá tốt. Cảm ơn. – Neophile

0

tôi biết đã quá muộn nhưng tôi vẫn muốn thêm vào này. cách Rất dễ dàng để thiết lập xác nhận cho nộp và làm mờ sự kiện là:

$("#MainForm").validate({ 
      onfocusout: function (element) {      
       if ($(element).valid()) 
       { 
        $(element).removeClass('input-error').addClass('input-valid'); 
       } 
      },     

      invalidHandler: function (event, validator) { 
       $.each(validator.errorList, function (index, error) { 
        $(error.element).addClass('input-error'); 
       }); 
      }, 

      showErrors: function() { 
       //This function is kept blank so as to hide the default validation messages. 
      } 
     }); 

CSS

.input-error { 
    border-color: #FF1919; 
    box-shadow: 0px 0px 10px #FF1919; 
} 
.input-valid { 
    border-color:#009500; 
    box-shadow: 0px 0px 10px #009500; 
} 

Hãy thử.