2014-10-09 58 views
1

我想顯示'名稱已存在'而不是'此值似乎無效'。在歐芹遠程驗證。歐芹遙控器替換默認錯誤信息

我嘗試使用

$('#script-name').parsley() 
    .addAsyncValidator('remotevalidator', function (xhr) { 
     var userName = $('#user-name').parsley(); 
     var valid = (xhr.responseText != 'true'); 

     if(valid){ 
      window.ParsleyUI.removeError(name,'remote'); 
     }else{ 
      window.ParsleyUI.addError(parsley,'remote','User name already used'); 
     } 

     return valid; 
    }, PageVariables.USER_NAME_EXISTS_URL); 

但它提供了兩個消息。

+0

你能提供一個你的歐芹js的小提琴嗎?另外,看看[這個答案](http://stackoverflow.com/questions/25049536/parsley-js-remote-validation-response-still-validates-to-true-after-parsleyui-ad/25049642#25049642 )你可以在哪裏查看同一個案例。 – 2014-10-09 14:27:41

回答

4

我會指出你應該改變你的代碼工作,但有一個更簡單的方法來完成你想要的結果這個答案。

<input type="text" name="userName" id="user-name" 
    data-parsley-trigger="focusout" 
    data-parsley-remote 
    data-parsley-remote-options='{ "type": "POST" }' 
    data-parsley-remote-validator="remotevalidator" 
    required /> 

<script> 
var username = $("#user-name").parsley() 
    .addAsyncValidator('remotevalidator', function (xhr) { 
     var valid = xhr.responseText != 'true'; 

     window.ParsleyUI.removeError(username,'remote'); 
     window.ParsleyUI.removeError(username,'remotevalidator'); 

     if(!valid) { 
      window.ParsleyUI.addError(username,'remotevalidator', 'User name already used'); 
     } 

     return valid; 

    }, PageVariables.USER_NAME_EXISTS_URL); 
</script> 

一些言論:

  1. 在你的代碼使用$('#script-name').parsley().addAsyncValidator(...)。請注意,您應該將異步驗證器添加到字段而不是表格。因此,您應該使用$("#user-name")
  2. 當您添加或刪除window.ParsleyUI的消息時,請參考usernameparsley。您應始終參考在開始時定義的username
  3. 無論驗證結果如何,您總是希望刪除remote的默認消息。刪除我以前稱爲remotevalidator的消息也很重要。

還有就是要完成你想要的

而是與window.ParsleyUi搞亂的一個更簡單的方法,你可以只在您輸入設定的消息。您的代碼將如下所示:

<input type="text" name="userName" id="user-name" 
    data-parsley-trigger="focusout" 
    data-parsley-remote 
    data-parsley-remote-options='{ "type": "POST" }' 
    data-parsley-remote-validator="remotevalidator" 
    data-parsley-remote-message="User name already used" 
    required /> 

<script> 
var username = $("#user-name").parsley() 
    .addAsyncValidator('remotevalidator', function (xhr) { 
     return xhr.responseText != 'true'; 

    }, PageVariables.USER_NAME_EXISTS_URL); 
</script> 
0

我解決了此問題,在元素中添加屬性「errorMessage」。如:

$("#user-name").parsley({ errorMessage: "User name already used" }); 
+1

Ok Mogsdad,完成。感謝o / – 2015-09-16 13:35:42