首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点击似乎被模糊阻挡

点击似乎被模糊阻挡
EN

Stack Overflow用户
提问于 2013-06-21 22:10:28
回答 1查看 133关注 0票数 1

我使用绑定到blur事件的指令来处理验证,如下图所示:

http://plnkr.co/edit/avEJ2xfLfz6ihM3DwLyB?p=preview (第一个字段的有效输入是电子邮件地址,第二个字段是'yes')

验证是有效的,但是为了触发allowValidation()函数,有时您必须单击submit按钮两次。

我将范围缩小到onblur和按钮之间的一些交互;假设你有一个onblur,即使在两个文本字段中的一个上仍在等待模糊,按钮只处理模糊而不是单击。

有没有办法让它处理点击而不是模糊呢?我也在click中调用验证。

EN

回答 1

Stack Overflow用户

发布于 2013-06-21 22:54:34

在我的试验中,我没有发现你的代码有任何问题。然而,如果你真的有这样一个场景,模糊和点击按钮似乎是冲突的,你可以有一个变量,它在有效性被触发时设置,在验证完成后重置。

基本上,在指令上的链接函数中,具有以下内容:

代码语言:javascript
复制
//Keeps track of the validation being active
var validationInProgress = false;

function dovalidation () {
    validationInProgress = true;
    //Validation code goes here
    if (EMAIL_REGX.test(elm.val())) {
        ctrl.$setValidity('emails', true);
    } else {
        ctrl.$setValidity('emails', false);
    }

    //Set this after validations are over
    //Should be the last statement in this function
    validationInProgress = false;
}

完成此操作后,每次调用dovalidation()时,在调用之前检查是否已有验证正在进行-如果没有,则仅调用。

代码语言:javascript
复制
elm.bind('blur', function () {
    if (!validationInProgress) {
        scope.$apply(dovalidation);
    }
});

scope.$on('kickOffValidations', function () {
    if (!validationInProgress) {
        dovalidation();
    }
});

编辑:具有上述更新的Plunkr代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17237410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档