防止在Jquery中删除退格键

Arp*_*tta 2 jquery keycode keypress 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"
        });
    }
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="txtCustNameSHP" value="foobar" />
Run Code Online (Sandbox Code Playgroud)

Mah*_*ouh 7

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

问题2:您的活动e不是event

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


带有确认消息:

$("#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();
        }
    }
});
Run Code Online (Sandbox Code Playgroud)
<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>
Run Code Online (Sandbox Code Playgroud)

选项:

  • dontDelete = undefined;系统将向用户显示确认信息,记住选择内容
  • dontDelete = false; 用户将可以删除。
  • dontDelete = true;用户将能够删除。


Has*_*our 5

First Thing-将回调处理程序绑定到事件keydown,而不是keyup,因为您希望在单击按钮时而不是在其之后捕获按钮。然后使用e.which来检查按下了哪个键。从jQuery文档中

若要确定按下了哪个键,请检查传递给处理函数的事件对象。虽然浏览器使用不同的属性来存储此信息,但是jQuery规范化了.which属性,因此您可以可靠地使用它来检索键码。

https://api.jquery.com/keydown/

$("#txtCustNameSHP").keydown( function(e){  
  if( e.which == 8){   
    e.preventDefault();  
    return false;   
  } 
});  
Run Code Online (Sandbox Code Playgroud)