我會指出你應該改變你的代碼工作,但有一個更簡單的方法來完成你想要的結果這個答案。
<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>
一些言論:
- 在你的代碼使用
$('#script-name').parsley().addAsyncValidator(...)
。請注意,您應該將異步驗證器添加到字段而不是表格。因此,您應該使用$("#user-name")
- 當您添加或刪除
window.ParsleyUI
的消息時,請參考username
和parsley
。您應始終參考在開始時定義的username
。
- 無論驗證結果如何,您總是希望刪除
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>
你能提供一個你的歐芹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