jquery - 防止Jquery中的退格键删除

标签 jquery keypress keycode backspace

我有一个文本框。当用户按下退格按钮时,我想防止退格删除文本并发出特定的警报,例如“您要删除吗”?以及两个按钮。只有当用户确认删除操作时,随后单击退格按钮才会删除文本。

我写了下面的代码。虽然效果很好。但它无法阻止退格键删除文本。谁能帮我解决这个问题吗?

$("#txtCustNameSHP").keyup(function (e) {
    var key = event.keyCode || event.charCode;
    if (keypresscount == 0 && key == 8 || key == 46) {
        event.preventDefault();
        $.uxMsg({
            title: "Confirmation",
            msg: "Do you want to delete the Shipper?",
            button1Text: "YES",
            button2Text: "NO",
            button1Click: function () {
                // CUSTOMER LOV
                //$("#" + txtCustCodeSHP).text("");                        
                keypresscount++;
            },
            button2Click: function () {
                return false;
            },
            width: "350px",
            height: "100px"
        });
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="txtCustNameSHP" value="foobar" />

最佳答案

问题 1:您应该使用 keydown 而不是 keyup,因为删除完成后将触发 keyup

问题 2:您的事件是e,而不是事件

$("#txtCustNameSHP").keydown(function (e) {
  var key = e.keyCode || e.charCode;
  if (key == 8 || key == 46) {
      e.preventDefault();
      e.stopPropagation();
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="txtCustNameSHP" value="foobar" />

<小时/>

带有确认消息:

$("#txtCustNameSHP").keydown(function(e) {
    var key = e.keyCode || e.charCode;
    if (key == 8 || key == 46) {
        if (typeof(dontDelete) == "undefined") {
            var r = confirm("You're about to delete!\nAre you sure?");
            if (r == true) {
                dontDelete = false;
            } else {
                dontDelete = true;
            }
        }
        if (dontDelete) {
            e.preventDefault();
            e.stopPropagation();
        }
    }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="txtCustNameSHP" value="foobar" />
<button type="button" onclick="dontDelete = false">enable delete</button>
<button type="button" onclick="dontDelete = true">disable delete</button>
<button type="button" onclick="dontDelete = undefined">Reset (ask on delete)</button>

选项:

  • dontDelete = undefined; 用户将收到确认 并且选择将被记住
  • dontDelete = false; 用户将能够删除。
  • dontDelete = true; 用户将无法删除。

关于jquery - 防止Jquery中的退格键删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42486467/

相关文章:

Javascript 字符代码 - 关键代码 0

javascript - 如何在 Firefox OS 手机上按 Enter 时阻止换行

javascript - Rails 3.1.1 中的 jquery 总是给出 DOMException

javascript - 另一个简单的 jQuery 进度条问题

c# - 在 DataGridView 中使用 +(加号)和 -(减号)键盘键作为递增器和递减器

jquery按键事件仅在特定键码上触发自动完成

JQuery 控制台日志到文件

jquery - 如何在外部JS函数中提及操作方法的路径?

javascript - jQuery 将按键更改为文本字段

macos - 检测 OS X 上的任何按键,包括修饰键