当用户在文本框中时,防止javascript keyup函数效果
preventing javascript keyup function effect when the user is in a text box?
目前我使用以下代码允许用户"浏览"我的web应用程序上的内容:
$(this).keyup(function(e) {
if(e.which == 37) {
document.location = $("#prev_button").attr('href');
}else if(e.which == 39) {
document.location = $("#next_button").attr('href');
}
});
问题是,如果用户在页面顶部的搜索表单中,我不希望箭头键重定向页面(相反,它们应该在没有功能的情况下正常工作,即允许文本光标在文本中移动)。
表单id是"searchForm"-如果选择了搜索表单,我可以在if语句中添加一个子句,该子句的计算结果为false吗?
您可以在文本框中停止事件的传播,这样事件就不会到达您的另一个处理程序:
$('#searchbox').keyup(function(e) {
e.stopPropagation();
});
我会使用类似的东西:Demo
$(this).keyup(function(e) {
if(~['input', 'textarea'].indexOf(e.target.tagName.toLowerCase())) return;
if(e.which == 37) {
document.location = $("#prev_button").attr('href');
}else if(e.which == 39) {
document.location = $("#next_button").attr('href');
}
});
通过这种方式,可以排除所有<input>
和<textarea>
元素。
IMO,仅排除#searchbox
不是一个好的解决方案,因为将来您可能会更改其id
或包含其他文本字段,但忘记了必须在排除脚本中反映更改。
查看此线程:)查找当前是否选择了文本框
function checkFocus() {
if ($(document.activeElement).attr("type") == "text" || $(document.activeElement).attr("type") == "textarea") {
//Something's selected
return true;
}
}
相关文章:
- 使用javascript防止其他弹出窗口
- 使用原生 JavaScript 防止轮播中的气泡
- 使用javascript防止文本框中的值重复
- Javascript-防止函数多次执行
- 使用Javascript防止WebSQL注入
- 如何使用Javascript防止页面滚动上的剑道下拉列表崩溃
- JavaScript 防止文本区域中的特殊字符
- 使用 jquery/ javascript 防止第一次警报
- HTML,CSS,Javascript:防止在非显示元素中执行javascript
- Telerik ASP.Net RadGrid 添加新记录客户端 JavaScript 防止行为
- 使用维护滚动位置的 Javascript 防止回发
- 如何使用javascript防止跨站点脚本攻击
- 有没有什么方法可以用javascript防止页面加载图像
- 使用javascript防止从gridview异步回发
- JavaScript:防止JavaScript对象的多个实例在完成后被处理
- Javascript防止表单post,如果没有验证
- 使用jquery、javascript防止回发
- 使用javascript防止safari休眠
- JavaScript:防止无意中创建新属性
- 使用javascript防止上下文菜单上的CTRL+左键点击