0
<input id='nb' name="nb" type="number" placeholder="Number"/>

jQuery.val() 如果只有数字则返回该值,但如果有任何字母则为空。

Chrome 显示输入数字箭头(并且它们有效),但我也可以输入字母.. 奇怪的事情

顺便说一句,在 mozilla 和 IE8 上它变成了一个正常的输入文本(猜我有一个旧的 mozilla)

任何想法 ?在 jQuery doc 上找不到任何特定于带有 .val() 的数字输入的内容

4

2 回答 2

1

建议input type="text"改为 HTML5 输入input type="number"

//HTML

<input id="inp" type="text" />

//JAVASCRIPT (JQUERY NEEDED)

function onlyNumbers(evt) {
    // SOME OPTIONS LIKE ENTER, BACKSPACE, HOME, END, ARROWS, ETC.
    var arrayExceptions = [8, 13, 16, 17, 18, 20, 27, 35, 36, 37,
        38, 39, 40, 45, 46, 144];
    if ((evt.keyCode < 48 || evt.keyCode > 57) &&
            (evt.keyCode < 96 || evt.keyCode > 106) && // NUMPAD
            $.inArray(evt.keyCode, arrayExceptions) === -1) {
        return false;
    }
}

$('#inp').on('keydown', onlyNumbers);

//JAVASCRIPT (WITHOUT JQUERY)

function inArray(value, arr) {
    for(var i = 0; i < arr.length; i++) {
        if (value === arr[i]) {
            return i;
        }
    }
    return -1;
}

function onlyNumbers(evt) {
    // SOME OPTIONS LIKE ENTER, BACKSPACE, HOME, END, ARROWS, ETC.
    var arrayExceptions = [8, 13, 16, 17, 18, 20, 27, 35, 36, 37,
        38, 39, 40, 45, 46, 144];
    if ((evt.keyCode < 48 || evt.keyCode > 57) &&
            (evt.keyCode < 96 || evt.keyCode > 106) && // NUMPAD
              inArray(evt.keyCode, arrayExceptions) === -1) {
        return false;
    }
}

document.getElementById('inp').onkeydown = onlyNumbers;

正如我在评论中所说,在 HTML5 成为我们可以正常使用的标准网络语言之前,我更喜欢使用它。

带 jQuery 的演示 不带jQuery
演示

于 2013-05-22T13:15:41.757 回答
0

如果您只想从输入中获取数字,那么您需要使用正则表达式。最初使用 $(your_element).val() 从输入中获取值,然后使用正则表达式。

是一个运行示例。希望能帮助到你。

于 2013-05-22T11:30:52.783 回答