2011-06-21 35 views
7

Tôi mới sử dụng jQuery.Làm thế nào tôi có thể phát hiện khi Xác thực jQuery được thực hiện và gọi một cái gì đó dựa trên sự kiện đó?

Làm việc với plugin xác thực jQuery & cufon cùng lúc sẽ cho tôi thời gian thực sự khó khăn.

Về cơ bản, tôi muốn phát hiện sự kiện khi Xác thực jQuery đã làm những gì cần làm và gọi ngay cho Cufon.refresh().

$('#commentForm').validate({ 
    rules: { 
     password: { 
      required: true, 
      minlength: 8, 
      maxlength: 8, 
      number: true 
     }, 
    } 
}); 

Chúng tôi đang mong đợi <label class="error"> SOME TEXT </label> khi biểu mẫu không hợp lệ.

Và một khi đã tạo, tôi muốn Cufon.refresh() trên nhãn đó được tạo bởi Xác thực jQuery. Làm cách nào tôi có thể phát hiện khi Xác thực jQuery được thực hiện và gọi điều gì đó dựa trên sự kiện đó?

Bất kỳ trợ giúp nào được đánh giá cao. Kính trọng, Piotr

Trả lời

9

Nhờ @Ariel - nếu có một 'thành công' phải có một 'không-thành công' là tốt, vì vậy ..

đang làm việc:

$('#commentForm').validate({ 
    rules: { 
     password: { 
      required: true, 
      minlength: 8, 
      maxlength: 8, 
      number: true 
     } 
    }, 
    showErrors: function(errorMap, errorList) { 
     this.defaultShowErrors(); 
     Cufon.refresh(); 
     //alert('not valid!') 
    }, 
    success: function() { 
     //alert('valid!') 
    } 
}); 

Cảm ơn một lần nữa cho ý kiến!

+0

Nếu bạn không muốn làm mới toàn bộ phông chữ, tôi thấy rằng chạy 'Cufon.replace ('label.error', {fontFamily:" myAwesomeFont "})' chạy nhanh hơn. Nếu bạn biết những gì đang xuất hiện, bạn chỉ có thể nhắm mục tiêu bộ chọn đó để không làm mới toàn bộ trang. –

2
submitHandler: { function(){ bla bla }} 

này sẽ cho phép bạn thực thi mã khi kết thúc validate. bạn sẽ cần phải đặt một đoạn biểu mẫu gửi, vì nó thay thế trình xử lý mặc định.

EDIT:

// specifying a submitHandler prevents the default submit 
    submitHandler: function() { 
     alert("submitted!"); 
    }, 
    // set this class to error-labels to indicate valid fields 
    success: function(label) { 
     // set as text for IE 
     label.html(" ").addClass("checked"); 
    } 

Bạn có thể sử dụng để làm những gì bạn muốn. submitHandler cho phép bạn ngừng gửi và thực thi mã thay thế (bạn có thể sử dụng nó để thực hiện mã TRƯỚC KHI bạn gửi nó) hoặc thành công để thực thi mã sau khi gửi.

+0

sai Validate Plugin :) Có vẻ có tấn và anh ta đã không nói cái nào. Tôi giả định những người có tùy chọn 'quy tắc '. – Ariel

+1

_bạn sẽ cần đặt một đoạn biểu mẫu gửi vì nó thay thế trình xử lý mặc định._ Một chút chi tiết hơn nếu bạn có thể - tôi là người mới. – Iladarsda

+0

@Ariel - đây là plg mà tôi đang sử dụng 'http: // bassistance.de/jquery-plugins/jquery-plugin-validation /' – Iladarsda

3

Sử dụng success tùy chọn:

$('#commentForm').validate({ 
    rules: { 
     password: { 
      required: true, 
      minlength: 8, 
      maxlength: 8, 
      number: true 
     }, 
    } 
    success: function() { .... } 
}); 

Lưu ý rằng bạn có thừa một dấu phẩy sau cú đúp gần cho đối tượng mật khẩu. Điều này sẽ gây ra lỗi trong IE.

+0

Tôi đang tìm kiếm sự kiện không hợp lệ! Cảm ơn cho ý tưởng mặc dù! – Iladarsda

+0

Nhờ @Ariel - nếu có một 'thành công', cũng phải có một 'không thành công', vì vậy .. Mã số làm việc: '$ ('# commentForm').validate ({ quy tắc: { mật khẩu: { yêu cầu: đúng, MINLENGTH: 8, maxlength: 8, số: true} }, showErrors: function (errorMap, errorList) { this.defaultShowErrors (); Cufon.refresh(); // alert() }, thành công 'không hợp lệ!': function() {// alert ('! hợp lệ') } }); ' Cảm ơn một lần nữa cho ý tưởng! – Iladarsda

0

Đặt bên trong tùy chọn errorPlacement.

errorPlacement: function(error, element) { 
    error.appendTo(element.parent()); 
    yourCodeHere(); 
} 
1
<script src="js/validate/jquery-1.11.1.min.js"></script> 
<script src="js/validate/jquery.validate.min.js"></script> 
<script src="js/validate/additional-methods.min.js"></script> 

<script> 
    jQuery.validator.setDefaults({ 
     success: "valid" 
    }); 

    var form = $("#myform"); 
    form.validate({ 
     rules: { 
      name: {required: true, minlength: 2}, 
      lastname: {required: true, minlength: 2} 
     } 

    }); 

    $("#button").click(function() { 
     if(form.valid() == true) { // here you check if validation returned true or false 
      $("body").addClass("loading"); 
     } 
    }) 

</script> 
+0

Bạn nên thêm một số ngữ cảnh vào mã của mình. Cho OP biết lý do tại sao điều này giải quyết vấn đề của anh ta/cô ấy. – mdewitt

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