2013-05-22 2 views
0
<input id='nb' name="nb" type="number" placeholder="Number"/> 

jQuery.val() возвращает значение, если только числа, но пустые, если есть какая-либо буква.jQuery - Не удается получить значение входного номера

Chrome показывает номер входа стрелки (и они работают), но я могу напечатать буквы тоже .. Странная вещь

BTW на Mozilla и IE8 становится нормальным ввод текста (думаю, у меня есть старый Mozilla)

Есть идеи? Не удалось найти что-либо в jQuery doc для ввода чисел с .val()

+0

Из любопытства, что же 'this.value' дает (вместо' $ (это) .val() ')? –

+1

Самый простой способ сделать это в подходе - это игнорировать HTML5, использовать текст DaGLiMiOuX

+0

Изменить тип текста, вы получите номер, а также буквы, которые вы набираете. – Sudz

ответ

0

Если вы хотите получить только цифры от ввода, вам нужно использовать регулярные выражения. Сначала получите значение из ввода с помощью $ (your_element) .val(), затем используйте регулярные выражения.

Here - пример работы. Надеюсь, поможет.

+0

Это не моя проблема, я уже использую этот вид решение для поддержки кросс-браузера. Я надеялся, что в браузерах с поддержкой HTML5 это не понадобится, но, по-видимому, даже хром не всегда поддерживает «числовые» входы. Только для информации, что я использую http://jsfiddle.net/gJQCf/ – user2316341

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 не станет стандартным веб-языком, который мы можем работать с ним правильно, я предпочитаю использовать это.

Demo с JQuery
Demo без JQuery

Смежные вопросы