2011-08-09 42 views
12

Cách tốt nhất để kích hoạt lỗi trên các thành phần cho lỗi xác thực phía máy chủ là gì sau khi biểu mẫu vượt qua xác thực phía máy khách ban đầu?Làm cách nào để sử dụng plugin Xác thực jQuery với xác thực phía máy chủ ở cấp biểu mẫu?

$("#contact_form").validate({ 
    submitHandler: function(form) { 
    $.ajax({ 
     type: 'POST', 
     dataType: 'json', 
     url: '/contact/send', 
     data: $(form).serialize(), 
     success: function(response) { 
     if(response.error) { //server came back with validation issues 
      var fields = response.fields; 
      for(var i=0, var len = fields.length; i < len; i++) { 
      var field_name = fields[i].name; 
      var field_error = fields[i].error; 

      // TRIGGER ERROR ON AFFECTED ELEMENT 

      } 
      return false; 
     } 
     //everything went ok, so let's show a thanks message 
     showThanks(); 
     } 
    } 
}); 

Tôi đang nghĩ đến một cái gì đó như:

$(form).find("[name='" + field_name + "']").triggerError(field_error); 

Nhưng tôi không thấy bất kỳ phương pháp api cho tay kích hoạt lỗi theo cách đó.

Trả lời

13

Tôi nghĩ rằng tôi figured nó ra từ tài liệu của Validator/showErrors

var validator = $("#contact_form").validate(); 
validator.showErrors({"state": "Bad state."}); 
+0

Cách hiển thị nhiều thông báo lỗi trên một trường. Giống như {'state': ['bad state', 'nên là 5 charactors']} – Prasanna

0

Làm cho nó. Write a plugin sẽ làm bất cứ điều gì bạn muốn. Hoặc nếu bạn gặp rắc rối, chỉ cần viết một hàm javascript để thực hiện và gọi nó.

Tôi sẽ viết một plugin có thể tạo một div, điền vào đó bằng văn bản lỗi và tạo hiệu ứng độc đáo.

+1

Tôi thực tế ly bắt đầu lăn plugin của riêng tôi nhưng tôi muốn thử và tránh tái phát minh bánh xe nếu tôi có thể. Đây thực sự là chức năng duy nhất tôi thiếu và nó có vẻ giống như một trường hợp sử dụng khá phổ biến, vì vậy tôi chỉ đang cố gắng xem có ai khác đã chạy vào nó trước khi tôi dành thời gian để cuộn của riêng tôi. – user126715

+0

Tôi thường hiểu rằng công việc tốt nhất là công việc bạn làm. Tôi tìm kiếm nhanh chóng không cung cấp kết quả, có thể ai đó biết một plugin như vậy cụ thể, bây giờ, tôi sẽ viết một plugin rất đơn giản –

-3

Khi gửi biểu mẫu, tôi sẽ làm cho mục tiêu của biểu mẫu là một khung nội tuyến vô hình trên trang mà sau đó sẽ gọi một hàm trong topWindow với kết quả là.

<iframe id="subject_frame" name="submit_frame" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe> 

sau đó trong trang trong iframe gọi phương thức javascript trong cửa sổ trên cùng chuyển hướng thành công hoặc hiển thị lỗi.

Trong iframe

<script language="javascript" type="text/javascript"> 
    window.top.window.submitComplete("<?php echo $response; ?>"); 
</script> 

Trong cửa sổ đầu (như là một ví dụ)

function uploadComplete(result){ 
    $.unblockUI(); 
    if(result == "OK"){ 
     $.blockUI({ message: "<span style='color:green;'>File upload successful, request submitted.</span><br/><br/>Redirecting..." }); 
     setTimeout(function() { 
      $.unblockUI({ 
       onUnblock: function(){ window.location='thankyou.php'; } 
      }); 
     }, 2000); 

    } else { 
     $.blockUI({ message: "<span style='color:red;'>Failed.</span><br/><br/>"+result }); 
     $('.blockOverlay').attr('title','Click to remove').click($.unblockUI); 
    } 
} 
+0

Sử dụng 'iFrame' cách xa lý tưởng trong trường hợp này. Có nhiều công nghệ tốt hơn để sử dụng trong trường hợp này. –

+0

Tôi đã có quy trình gửi biểu mẫu dưới sự kiểm soát, tôi chỉ muốn có thể kích hoạt các lỗi giống như chúng là bất kỳ lỗi xác thực phía máy khách nào khác dựa trên phản hồi. – user126715

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