javascript - 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
}
解决方案
尝试使用 javascript 解决它,而不是找到有关角度事件的解决方案。以这种方式更改您的验证功能。
this.validate= function($event) {
// do something else
$event.stopPropagation();
$event.preventDefault();
};
并且不允许preventDefault
直接开火。stopPropagation
ng-click
另一种解决方法是使用指令。
.directive('stopPropagation', function () {
return {
restrict: 'A',
link: function (scope, element) {
element.bind('click', function (e) {
return false;
});
}
};
});
详细说明可以看这里
推荐阅读
- azure - 未捕获的异常:AADSTS65001:即使我已将应用重新授权为管理员
- git - Git push 通过 Visual Studio 工作,但不能通过命令行工作(身份验证失败)
- haskell - 无法理解 State Monad 如何在此代码中获取状态
- c# - .Net Core 和 .Net Framework 配置
- neo4j - 如何限制节点之间的关系数量?
- node.js - 如何将数据无限数据保存到mongodb集合
- javascript - 如何将 CSS 应用于字符串变量
- java - 收集要设置的多维数组的列
- javascript - 在焦点事件(jQuery)上触发鼠标点击 goTo href
- html - 如何为 Bootstrap 4.1 制作轮播固定覆盖?