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)
问题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;用户将不能够删除。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)