gpt4 book ai didi

javascript - 模糊angularJS上的异步验证指令

转载 作者:行者123 更新时间:2023-11-29 21:15:37 24 4
gpt4 key购买 nike

我正在尝试创建一个指令来验证用户通过异步网络请求提供的邮件。它工作正常,但问题是每次用户键入一个字符时都会进行异步调用,我希望异步调用仅在模糊时进行,我该怎么做?

指令代码如下:

angular.module('myModule').directive('usernameValidator', function($http, $q) {
return {
require: 'ngModel',
link: function(scope, element, attrs, ngModel) {
ngModel.$asyncValidators.username = function(modelValue, viewValue) {
return $http.post('/username-check', {username: viewValue}).then(
function(response) {
if (!response.data.validUsername) {
return $q.reject(response.data.errorMessage);
}
return true;
}
);
};
}
};
});

我试过把所有东西都放在一个 block 中

element.bind('blur', function() { ... })

但是当代码在 element.bind block 中时,我有一个完全奇怪的行为:第一次我关注输入,没有异步调用,当我模糊没有异步调用,当我回来关注我有异步的输入调用每个字符..

最佳答案

尝试在 HTML ng-model-options="{ updateOn: 'blur' }" 中添加您的指令,如 https://docs.angularjs.org/api/ng/directive/ngModelOptions# 所示。 !, 所以你的指令看起来像:

<input ng-model="your_model"
username-validator
ng-model-options="{ updateOn: 'blur' }">

关于javascript - 模糊angularJS上的异步验证指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39533732/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com