2012-12-13 27 views
0

我有一個遠程規則和一些其他基本所需的規則。奇怪的是,如果我的遠程規則通過了,但其他一些規則失敗了,它會繼續並提交表單。我試着將遠程規則移動到列表的後面或前面,以查看它是否有所作爲,但事實並非如此。有沒有人遇到過這個?jQuery驗證插件:有效的遠程調用bypassess其他無效檢查

http://jsfiddle.net/LU5sU/7/(通過驗證,在促銷代碼框中輸入測試。)

$('#ticket-form').validate({ 
onfocusout: false, 
onkeyup: false, 
onclick: false, 
rules: { 
    code: { 
     required: true, 
     remote: { 
      url: "http://www.bobmurdoch.com/ajax.php", 
      type: "post", 
      async: false, 
      data: { 
       action: "check_code", 
       code: function() { 
        return $("#code").val(); 
       }      
      } 
     } 
    }, 
    first_name: { 
     required: true 
    }, 
    last_name: { 
     required: true 
    }, 
    company: { 
     required: true 
    }, 
    address: { 
     required: true 
    }, 
    city: { 
     required: true 
    }, 
    state: { 
     required: true 
    }, 
    zip: { 
     required: true 
    }, 
    phone: { 
     required: true 
    }, 
    email: { 
     required: true, 
     email: true 
    }, 
    survey_question_1: { 
     required: false 
    } 
}, 
messages: { 
    code: { 
     required: "Please enter a valid promo code", 
     remote: "Please enter a valid promo code" 
    }, 
    first_name: "Please enter a value for First Name", 
    last_name: "Please enter a value for Last Name", 
    company: "Please enter a value for Company", 
    address: "Please enter a value for Address", 
    city: "Please enter a value for City", 
    state: "Please enter a value for State", 
    zip: "Please enter a value for Zip/Postal Code", 
    phone: "Please enter a value for Phone", 
    email: { 
     required: "Please enter a valid e-mail address", 
     email: "Please enter a valid e-mail address" 
    } 
}, 
showErrors: function (errorMap, errorList) { 
    var errors = ''; 
    for (var i in errorList) { 
     errors = errors + errorList[i].message + "\n" 
    } 
    if (errors != '') { 
     alert(errors); 
    } 
} 
}); 
+0

只是一個供參考:在您的jsfiddle演示中使用的HTML是無效的。您有多個不匹配和雜亂的標籤。您也可以使用''標籤,這些標籤早已被棄用。 – Sparky

回答

0

the online documentation for remote:,我從remote:刪除async: false,和它似乎是按預期工作。

按照文檔:

$("#myform").validate({ 
    rules: { 
    email: { 
     required: true, 
     email: true, 
     remote: { 
     url: "check-email.php", 
     type: "post", 
     data: { 
      username: function() { 
      return $("#username").val(); 
      } 
     } 
     } 
    } 
    } 
}); 

jsFiddle Demo

您的修改後的代碼:

code: { 
     required: true, 
     remote: { 
      url: "http://www.bobmurdoch.com/ajax.php", 
      type: "post", 
      data: { 
       action: "check_code", 
       code: function() { 
        return $("#code").val(); 
       }      
      } 
     } 
    }, 

編輯基於OP的評論:

通過刪除您的自定義函數,用於在彈出窗口中放置錯誤消息並使用默認errorPlacement:函數,我可以證明這是工作。輸入無效時顯示.invalid類,有效時顯示.valid類。您的問題在其他地方,與我的解決方案無關。

見演示:http://jsfiddle.net/LU5sU/11/

+0

這給出了奇怪的結果(我會閱讀你提供的文檔鏈接)。現在我收到錯誤消息,但輸入框的樣式是有效的。 – Steve

+0

@Steve,但你原來的jsFiddle根本沒有顯示任何有效/無效的樣式變化。我怎麼能看到一個不完整的演示? AFAIK,這是解決了......現在該表格只會通過驗證,如果所有必填字段被正確填寫。 – Sparky

相關問題