防止退格键在 AngularJS 中导航回来
Prevent backspace from navigating back in AngularJS
我在我的AngularJS网络应用程序中遇到了这个问题。
当用户进入一个包含要填写表单的页面并开始键入时,如果他按下退格键并且焦点不在输入文本上,则页面将进入上一个状态。
我使用 jQuery 查找了这个解决方案,但它似乎不是在 AngularJS 中实现这一目标的合适方法。
在角度 js 中有$document
:
angular.module('yourModule', [])
.controller('yourController', ['$scope', '$document', function($scope, $document) {
$document.on('keydown', function(e){
if(e.which === 8 && ( e.target.nodeName !== "INPUT" && e.target.nodeName !== "SELECT" ) ){ // you can add others here inside brackets.
e.preventDefault();
}
});
}
]);
普伦克尔演示。
您可以在演示中看到我仅用于 nodeName "INPUT"
它不会阻止文本输入时退格键的默认值,但不会阻止textarea
上的退格键默认值,因为我们没有在这种情况下处理它。
我无法评论"接受的答案",但它将不正确,作为条件
e.which === 8 && e.target.nodeName !== "INPUT" || e.target.nodeName !== "SELECT"
有逻辑错误,所以你可以使用
e.which === 8 && e.target.nodeName !== "INPUT" && e.target.nodeName !== "SELECT"
或写@ThisIsMarkSantiago的答案。
在控制器中添加以下脚本
var rx = /INPUT|SELECT|TEXTAREA/i;
$document.on("keydown keypress", function(e){
if( e.which == 8 ){ // 8 == backspace
if(!rx.test(e.target.tagName) || e.target.disabled || e.target.readOnly ){
e.preventDefault();
}
}
});
或者你可以使用 Jquery
$(function(){
var regx = /INPUT|SELECT|TEXTAREA/i;
$(document).bind("keydown keypress", function(e){
if( e.which == 8 ){ // 8 == backspace
if(!regx.test(e.target.tagName) || e.target.disabled || e.target.readOnly ){
e.preventDefault();
}
}
});
});
我在这里得到了这个答案:如何在所有浏览器上禁用退格键?
$(document).keydown(function(e) {
var nodeName = e.target.nodeName.toLowerCase();
if (e.which === 8) {
if ((nodeName === 'input' && e.target.type === 'text') ||
nodeName === 'textarea') {
// do nothing
} else {
e.preventDefault();
}
}
});
只需将其放入控制器中即可。
相关文章:
- 使用Angularjs$state.go导航
- 使用AngularJS停用引导导航栏按钮
- 如何在angularjs中进行简单的菜单导航
- 动态生成导航栏和AngularJS
- 防止退格键在 AngularJS 中导航回来
- 将持久活动类附加到导航栏范围中的导航元素(AngularJS)
- 在angularjs中导航期间的停止时间间隔
- 在hash更改或导航、angularjs、多个视图上更改部分视图
- Bootstrap/AngularJs:如何为导航类的活动选择设置粗体属性
- AngularJS Bootstrap Tabset 选项卡在 IE8 中不起作用的选项卡之间的选项卡导航
- Angularjs:隐藏包含动态参数的网址的导航栏
- 如何让 AngularJS 响应导航
- AngularJS材料 - 侧面导航无法使用玉石
- AngularJS选项卡导航和模块注入
- AngularJS:如何在不通过多个$parent导航的情况下访问最顶层的范围
- 使用温泉导航器和AngularJS切换页面
- AngularJs - 如何在导航到新路线时清理控制器
- AngularJS$locationChangeStart事件取消路由导航
- Angularjs$state无法导航回来
- Angularjs导航菜单,带有UI引导选项卡和UI路由器