【问题标题】:Catch input earlier than onChange and preferably only numbers在 onChange 之前捕获输入,最好只捕获数字
【发布时间】:2012-03-26 11:19:47
【问题描述】:

我有一个输入字段表。没有经验的用户会使用该表单,所以我想做好最坏的打算。

我创建了一些代码,一旦输入字段发生更改,表格行就会突出显示。这里的缺点是代码是在用户在输入框外点击后触发的。

我希望实现的目标如下。

  • 一旦用户输入内容,就会触发偶数,在每个数字之后,输入/退格等。此事件将突出显示表格行。稍后我想扩展此功能以在本地自动保存表单,但我稍后会找出代码。
  • 其次,它是一种价格形式,如果用户可以只输入数字,那就太好了

他们将使用的浏览器具有完整的 html5 和 css3 支持,作为 JavaScript 引擎,我使用最新版本的 jQuery。

PS。如果实施此方法有任何不利之处,请也告诉我。

【问题讨论】:

  • 使用 keyup() 而不是 blur() 只是一个猜测,但没有看到你尝试了什么我不知道。使用 HTML5,您可以设置输入 type="number"

标签: javascript jquery html forms


【解决方案1】:

使用keyup 事件,输入的值将在此事件触发时更新,但您可以在用户blurs 元素之前更改值。

更新

您可以使用正则表达式将输入限制为仅数字:

//bind to the `keyup` event for all `input` element(s)
$('input').on('keyup', function () {

    //replace the value of this input by only the digits in it's value
    //note that this method works even if the user pastes a block of text into the input
    this.value = this.value.replace(/[^0-9]/gi, '');
});​

这是一个演示:http://jsfiddle.net/bKsTG/1/

【讨论】:

    【解决方案2】:

    使用keyup事件,检查event.keyCode值是否为数字,回车/退格

    $('selector').keyup(function(event){
       if (event.keyCode in [48,49, 50 .... 57,13]){ /* your code*/ };
    });
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2018-06-20
      • 1970-01-01
      • 2019-08-22
      • 1970-01-01
      • 2011-09-12
      相关资源
      最近更新 更多