Javascript 删除非数字而不清除以前的数字的数字字段?

Javascript 删除非数字而不清除以前的数字的数字字段?,javascript,jquery,html,Javascript,Jquery,Html,我正在使用: <input type="text" onkeyup="this.value = this.value.replace(/\D/g, '')"> 我使用它来防止用户在我的页面上的字段中输入除数字以外的任何内容。但是,我注意到,如果用户先键入一个数字,然后意外地点击了一个非数字键,那么该字段将被清除,他们必须重新开始。这可能会导致挫折感,所以我想知道是否有一种方法可以调整代码,使其不会这样做,或者是否有类似的方法可以使用。我仅限于JavaScript、JQuery和

我正在使用:

<input type="text" onkeyup="this.value = this.value.replace(/\D/g, '')">


我使用它来防止用户在我的页面上的字段中输入除数字以外的任何内容。但是,我注意到,如果用户先键入一个数字,然后意外地点击了一个非数字键,那么该字段将被清除,他们必须重新开始。这可能会导致挫折感,所以我想知道是否有一种方法可以调整代码,使其不会这样做,或者是否有类似的方法可以使用。我仅限于JavaScript、JQuery和HTML。任何帮助都将不胜感激!:)

我找到了解决问题的方法。我去掉了上面的代码,最后使用了JS函数。我在$(Document).ready(function()中输入了。我希望这能帮助有同样问题的人

$("#medianSalary").keydown( function(event) { if (event.shiftKey || (event.keyCode < 48 || event.keyCode > 57) && (event.keyCode < 96 || event.keyCode > 105)) { event.preventDefault();} }); });
$(“#medianSalary”).keydown(函数(事件){if(event.shiftKey | | |(event.keyCode<48 | | event.keyCode>57)&(event.keyCode<96 | | event.keyCode>105){event.preventDefault()});

不确定您的意思;这对我来说很好。你能说得更具体一点吗?我无法重现所描述的行为。然而,这是糟糕的UI设计。您应该允许用户输入任何需要的内容(字母、符号),然后对数字进行验证。目前的这种治疗可能会产生意想不到的副作用(正如你所描述的),更糟糕的是,可能会让一些用户感到不安,甚至愤怒,因为当他们打字时,他们的键盘无法工作(“该死的网站!”,他们喊道)。相信我,这比我们大多数人想象的要频繁得多。我去掉了上面的代码,最终使用了JS函数。我希望这能帮助有同样问题的人$(“#medianSalary”).keydown(函数(事件){if(event.shiftKey | |(event.keyCode<48 | | event.keyCode>57)&(event.keyCode<96 | | event.keyCode>105){event.preventDefault()} }); });嗯,没有理由允许用户输入已知的坏数据。如果我在做客户端验证,为什么要让别人输入美国社会保险号码的字母?没有理由延迟反馈——只要有反馈,例如关于只接受数字的渐弱警告等@user3784596我认为您应该在填写表单后验证该值。有很多简单的方法可以做到这一点。您可以使用
输入类型编号
。有什么问题吗?