【问题标题】:get input value on keydown and set it to other input在 keydown 上获取输入值并将其设置为其他输入
【发布时间】:2016-06-13 14:43:45
【问题描述】:

我有一个输入元素,并希望确保只允许使用数值。我找到了一个工作示例here

现在我想获取该字段的值并将其写入另一个输入元素:

$(".firstinput").keydown(function (e) {
    // Allow: backspace, delete, tab, escape, enter and .
    if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
         // Allow: Ctrl+A, Command+A
        (e.keyCode == 65 && ( e.ctrlKey === true || e.metaKey === true ) ) || 
         // Allow: home, end, left, right, down, up
        (e.keyCode >= 35 && e.keyCode <= 40)) {
             var $this = $(this).val();
             $("copiedinput").val($this);
             return;
    }
    // Ensure that it is a number and stop the keypress
    if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
        e.preventDefault();
    }
});

这几乎可以工作,但我只有在按回车键或退格键后才能得到值。键入“222”和退格会导致 .firstinput 为“22”,而 .copiedinput 为“222”。如何获得实时值?

【问题讨论】:

  • 您是否尝试过&lt;input type="number" /&gt; 以及keyupchange 事件处理程序? jsfiddle.net/mhv7u36q
  • 我需要确保只能输入数字。所以数字类型的解决方案对我不起作用。

标签: jquery get numeric keydown


【解决方案1】:

试试这个:

$(".firstinput").keyup(function() {
    $(".firstinput,.copiedinput").val($(this).val().replace(/[^\/\d]/g, ""));
});

或者处理keydown:

$(".firstinput").keydown(function(e) {
    return (
        $.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
        (e.keyCode == 65 && (e.ctrlKey === true || e.metaKey === true)) || 
        (e.keyCode >= 35 && e.keyCode <= 40) ||
        (e.keyCode >= 96 && e.keyCode <= 105) ||
        (!e.shiftKey && e.keyCode >= 48 && e.keyCode <= 57)
    );
}).keyup(function() {
    $(".copiedinput").val($(this).val());
});

【讨论】:

  • 谢谢,但我不想让 .firstinput 输入除数字以外的其他字符。
  • 抱歉,出了点小错误。请检查更新的 keydown 示例。
  • 总体思路是在 keydown 上验证 keycode 并在 keyup 上填充复制的输入。
  • 完美运行!谢谢!
猜你喜欢
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 2018-12-30
  • 2014-05-11
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
  • 2017-12-06
相关资源
最近更新 更多