Javascript 代码如何在为移动浏览器单击ng之前调用ng blur

Javascript 代码如何在为移动浏览器单击ng之前调用ng blur,javascript,html,angularjs,Javascript,Html,Angularjs,在我的应用程序中,在同一页中有文本框和按钮。我们将通过该文本框的ng blur获取详细信息,然后我们将在按钮ng click函数中验证从ng blur检索到的值 但当客户在文本框中输入值后直接单击该按钮时,ng click在ng blur之前触发 它可以在桌面浏览器中正常工作,在点击前就可以调用。但不适用于移动浏览器。我在谷歌上搜索了这个问题的解决方案,但没有找到解决方案。对不起,我的英语,请让我们知道,如果有人有解决办法 Html代码: <input type="text" ng-mod

在我的应用程序中,在同一页中有文本框和按钮。我们将通过该文本框的ng blur获取详细信息,然后我们将在按钮ng click函数中验证从ng blur检索到的值

但当客户在文本框中输入值后直接单击该按钮时,ng click在ng blur之前触发

它可以在桌面浏览器中正常工作,在点击前就可以调用。但不适用于移动浏览器。我在谷歌上搜索了这个问题的解决方案,但没有找到解决方案。对不起,我的英语,请让我们知道,如果有人有解决办法

Html代码:

<input type="text" ng-model="txndata.txnNo" id="txnNo" 
       ngomitsplchar class="form-control"
       on-blur="getTxnData(txndata)" 
       tabindex="5" spellcheck="false" autocomplete="nope">


<button type="button" class="btn btn-primary btn-md" tabindex="17" 
        id = "validate" class="btn but_small1"
        ng-click="validate(txndata);">Enquiry</button>

尝试使用javascript解决它,而不是在角度事件上找到解决方案。 以这种方式更改验证函数

this.validate= function($event) {
    // do something else
    $event.stopPropagation();
    $event.preventDefault();
};
preventDefault
stopPropagation
将不允许
ng单击直接开火

另一种解决方法是使用指令

.directive('stopPropagation', function () {
    return {
        restrict: 'A',
        link: function (scope, element) {
            element.bind('click', function (e) {
                return false;
            });
        }
    };
});

<> P>详细描述可以看到

你有代码可以吗??@ SDH请找到我的代码SnpPETE,你可以考虑一个短定时器来延迟你要延迟的事件的触发。快速破解可能会解决您的问题。那么,为什么您要通过ng blur获取值呢?我不知道你想在这里做什么???您是在尝试对输入到字段中的值进行基本数据验证,还是在这里尝试完成什么?为什么不使用ngKeyup或ngMouseleave来验证您尝试执行的操作?ngBlur将在对象失焦时触发。如果您在字段中键入一个值,然后用ngClick单击一个按钮,两个事件将同时触发,这是关于哪个事件将首先触发的随机猜测。我可以使用这两个选项中的一个,或者考虑将一个定时器延迟添加到您希望最后触发的事件。它不起作用,当我单击该按钮时,它不调用该指令。
.directive('stopPropagation', function () {
    return {
        restrict: 'A',
        link: function (scope, element) {
            element.bind('click', function (e) {
                return false;
            });
        }
    };
});