2013-03-14 29 views
6

Tôi đang cố xác thực tính khả dụng của tên miền phụ với Công cụ xác thực jQuery thông qua chức năng tùy chỉnh. Xác nhận có vẻ xảy ra chính xác nhưng alertText không được hiển thị nếu yêu cầu .ajax trả về 200. Tôi đã thêm Access-Control-Allow-Origin tiêu đề và có thể thấy yêu cầu hoàn tất thành công trong nhật ký của mình.Xác thực javascript tùy chỉnh của công cụ xác thực jQuery

Tôi đang làm gì sai?

Javascript Function:

function validateDomain(field, rules, i, options) { 
    var url = "https://" + field.val() + ".example.com/"; 
    $.ajax(url, 
     { 
      statusCode: { 
       200: function() { 
        //alert('name exists already'); 
        return options.allrules.validate2fields.alertText; 
       } 
      } 
     }); 
} 

Form Field:

<label class="required" for="signup[subdomain]">Subdomain<span>*</span></label> 
    <span>https://</span> 
    <input id="signup[subdomain]" name="signup[subdomain]" class="field field validate[required,funcCall[validateDomain]]" type="text"> 
    <span>.example.com</span> 
+0

bạn có thể thêm một trình xử lý lỗi và xem liệu nó có được thực thi hay không, tôi nghi ngờ là lỗi phân tích đang xảy ra –

+2

giống như một bản sao của [Làm thế nào để trả lời phản hồi từ cuộc gọi AJAX từ một hàm?] (Http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call-from-a-function) – Bergi

+1

Bạn đã gắn thẻ cả thẻ này [tag: jquery-validate] và [tag : jquery-validation-engine] và đây là hai plugin hoàn toàn khác nhau. Bạn đang sử dụng cái nào? – Sparky

Trả lời

0

Vấn đề là $.ajax là một chức năng không đồng bộ và không làm việc theo cách này.

function validateDomain(field, rules, i, options) { 
    var url = "https://" + field.val() + ".example.com/"; 
    $.ajax(url, 
     { 
      statusCode: { 
       200: function() { // [ second function ] 
        return options.allrules.validate2fields.alertText; 
       } 
      } 
     }); 
} 

Vấn đề là: trở lại của bạn chỉ dành cho [second function] không cho validateDomain.

Nhìn vào tài liệu của jquery-validation-engine Tôi không thể thấy cách làm những gì bạn muốn.

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