2013-12-01 3 views
0

Я создаю форму для мобильного веб-приложения с полями ввода с запросом ввода номера, поэтому я использую input type="number" для проверки, и он работает хорошо. Я также меняю поведение на основе ввода в поле. Мне нужно скрыть div, пока пользователь не вводит текст в поле. Когда они удаляют весь текст из поля, затем снова скройте div. Это легко сделать - определить keyup на входе и если его value - пустая строка или нет. Проблема возникает, когда пользователь вводит текст, который не является допустимым числом (возможно, по крайней мере, с клавиатурой iOS). К сожалению, введенный текст value представляет собой пустую строку. Поэтому мой код скрывает div, когда мне все еще нужно, чтобы он был видимым, потому что он считает, что в поле ввода нет value.Тест на фактическое значение типа ввода = «число»

Как я могу получить фактический value, хранящийся в виде ввода, чтобы я мог протестировать его? (Мне нужно сохранить тип ввода номера, чтобы появилась соответствующая клавиатура.) Спасибо!

Вот мой фрагмент кода:

$('input.deletable').keyup(function() { 
    console.log($(document.activeElement).val()); //returns empty string if input is "?)&" for example 
    if ($(document.activeElement).val() != '') 
      $('#myDiv').css('display', 'block'); 
    else 
      $('#myDiv').css('display', 'none'); 
}); 
+0

Пустая строка действительно * есть * «фактическое значение». – Pointy

ответ

1

Я думаю, что «document.activeElement» разве лучший способ, чтобы получить текущее значение входного сигнала. Вы также можете проверить правильность ввода.

$('input.deletable').keyup(function() { 
    var $this = $(this); 
    if ($this.val() != '' && this.checkValidity()) 
      $('#myDiv').css('display', 'block'); 
    else 
      $('#myDiv').css('display', 'none'); 
}); 
Смежные вопросы