javascript 防止光标移动

标签 javascript preventdefault stoppropagation

进入输入框,我想停止光标的传播,就像我在向上键“↑”上输入一样:

之前:

tes|t//光标在t

之前

之后:

|test//光标开始

我想阻止光标移动,所以它必须停留在 t 之前。

到目前为止,我正在尝试这个,但它不起作用:

$('input').keyup(function(e) {

    if (e.which == 40) { // up key
        e.stopPropagation();
        e.stopImmediatePropagation();
        e.preventDefault();

        // actions

        return false;
    }

}

这有可能吗?

最佳答案

您可以使用 keydown为此:

$('input').keydown(function(e) {
    if (e.which == 40) { // up key
        return false;
    }
}

keyup 在处理完 keypress 事件后触发,keypress 应该不会为非打印字符触发(尽管有一些不同浏览器之间的不一致),因此最好的做法是在 keydown 处阻止事件的默认操作。

请记住,如果您没有充分的理由阻止默认操作(例如,在聚焦搜索字段的同时浏览自动完成列表),您可能会影响其他用户的可用性,正如@Kolink 所评论的那样。

关于javascript 防止光标移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15712462/

相关文章:

javascript - Jquery Sortable inside other sortable : On sorting the element how to detect which sortable moved child or parent

javascript - 如何使用 javascript 变量访问模型属性

javascript - 如何在覆盖警报功能后停止显示警报框

javascript stopPropagation() 阻止函数触发

nativescript - 在 NativeScript ios tap 事件中停止事件传播

javascript - 如何捕捉 stopPropagation 事件

javascript - 使用 AngularJS 动态分析和修改 $http 中的对象属性

javascript - typescript/javascript 是否有像 C# 一样的 @"\"?

javascript - 当在特定位置按下 'enter' 时阻止按钮提交表单

基于回调的Javascript条件preventDefault