2014-01-15 50 views
1

我想在單個元素中執行2個Ajax調用驗證。這是我迄今發表的。單個元素中的多個jQuery驗證遠程代碼

我的HTML:

<form id="xForm" method="post" action="/someurl"> 
    <input id="oUrl" name="oUrl" type="text" /> 
    <button type="submit">Register</button> 
</form> 

我的javascript:

$('#xForm').validate({ 
    rules:{ 
     oUrl:{ 
      required:true, 
      minlength:4, 
      maxlength:20, 
      remoteA:'/register/checkValidUrl', 
      remoteB:'/register/checkUrlAvailable' 
     } 
    }, 
    messages:{ 
     oUrl:{ 
      remoteA:'Url not valid', 
      remoteB:'Url already been taken' 
     } 
    } 
}); 

其實我有兩(2)遠程URL來檢查。我看到的大多數示例只使用1(一個)遠程站點。那麼我如何實現這一目標呢?

我這樣做的原因是因爲我根本無法找到一種方法來創建自定義驗證器,在該驗證器上服務器站點返回錯誤消息,並在客戶端使用它。

+0

[tag:jquery-validation-engine]插件與您使用的不是一回事。使用標籤時請多加小心。 – Sparky

+0

爲什麼你需要這樣做?只需在服務器上完成一次而不是兩次。你的問題寫得不好,對你的代碼沒有意義。您的代碼顯示的規則沒有任何字段名稱,這是該插件的語法錯誤。請參閱[sscce.org](http://sscce.org)和[本頁上的項目#1和2](http://stackoverflow.com/help/on-topic),獲取有關編寫更好問題的提示。 – Sparky

回答

7

報價OP「我想在單個元素中進行兩次ajax調用驗證。」

  1. 爲什麼?

  2. 不,你不能。

它應該是這樣的,它會很破...

$('#form').validate({ 
    rules:{ 
     myField: { // <-- rules are assigned by field 'name' 
      remote: '/register/checkValidUrl', 
      remote: '/register/checkUrlAvailable' 
     } 
    } 
}); 

然而,當你的字段值在第一時間發送到您的服務器端腳本,只需檢查一下如果它通過了所有必要的數據驗證,並且沒有必要再次發送同樣的東西。換句話說,將相同的值發送給服務器兩次沒有實際或邏輯的原因。

$('#form').validate({ 
    rules:{ 
     myField: { // <-- rules are assigned by field 'name' 
      remote: '/register/checkUrl' 
     } 
    } 
}); 

按照文件,如果你發回true從你的服務器,該領域將通過驗證。如果您發送一個字符串,該字段驗證失敗,並且該字符串成爲您的錯誤消息。這樣,您可以將值發送到服務器一次,並根據需要以多種不同的方式進行驗證。

你的服務器端代碼,(翻譯成任何你需要的語言)...

if invalid URL    
    echo JSON "url is invalid"   // fails validation  
else if unavailable URL  
    echo JSON "url is not available" // fails validation 
else if URL is purple  
    echo JSON "url must not be purple" // fails validation 
else      
    echo JSON TRUE      // passes validation    

See documentation:

響應作爲JSON進行評估,必須true的有效元素, 並且可以是任何false,undefinednull用於無效元素,使用 默認消息; 或A STRING,例如。 「該名稱已被佔用,請嘗試 peter123而不是」「以顯示錯誤消息。

+0

好了解。謝謝。 – dausdashsan

+0

這將如何工作的多個領域,都必須進行遠程驗證? – greaterKing

+0

@greaterKing,將相同的規則應用於多個字段沒有限制。否則,如果您遇到特定問題,請[發佈新問題](http://stackoverflow.com/questions/ask)。評論部分不用於回答新問題。 – Sparky