首页 > 解决方案 > CodeHow to call ng-blur before ng-click for Mobile browsers

问题描述

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

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

它在 ng-blur 在 ng-click 之前调用的桌面浏览器中运行良好。但不适用于移动浏览器。我用谷歌搜索了这个解决方案,但我没有得到解决方案。对不起我的英语,如果有人有解决方案,请告诉我们。

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>

JS代码:

$scope.getTxnData = function (formObj) {
    // Ajax call and other process
}

$scope.validate = function (formObj) {
    // Validation and submit process
}

标签: javascripthtmlangularjs

解决方案


尝试使用 javascript 解决它,而不是找到有关角度事件的解决方案。以这种方式更改您的验证功能。

this.validate= function($event) {
    // do something else
    $event.stopPropagation();
    $event.preventDefault();
};

并且不允许preventDefault直接开火。stopPropagationng-click

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

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

详细说明可以看这里


推荐阅读