2009-11-09 5 views
1

У меня есть форма и вы хотите отключить/включить его кнопку отправки в зависимости от того, пустые ли текстовые поля формы или что в них был введен текст.Событие ввода текста HTML

Я думаю, что это означает наличие обработчика событий для текстовых полей ввода «keydown или keypress события: при его запуске этот обработчик событий должен проверить, содержат ли текстовые поля ввода текст и соответственно включить или отключить кнопку отправки.

change событие выглядит как оно должно быть более полезным, чем keydown или keypress событий, за исключением того, что он не стрелял, пока контроль в вопросе теряет фокус, а что хорошего в том, что: поскольку пользователь хочет просто введите что-то, а затем нажмите кнопку отправки, я хочу, чтобы обработчик событий был запущен введенным текстом, и не только тогда, когда элемент управления теряет фокус.

Мои вопросы:

  • ли keydown и/или keypress события вызывается перед или после того, как соответствующий текст был вставлен в поле ввода текста?
  • Есть ли keydown и/или keypress события аннулируются (вы можете отменить их, чтобы предотвратить ввод соответствующего текста)?

Edit: FYI, то jQuery validation plug-in повторные испытания формируют действительность на Ключевание.

ответ

1

В ответ на ваши вопросы ...

  1. KeyDown или события нажатия клавиш могут быть перехвачены, прежде чем текст вводится Использование JavaScript
  2. Вы можете вернуть ложь после связывания функции в KeyDown или keypress событие. Это предотвратит ввод текста .

Пример использования JQuery:

$("#inputfield").live("keydown", function(){ 
    return false; 
}); 

Если вы хотите проверить некоторые входные валютирования на подчиненной формы вы можете сделать это с помощью JQuery submit().

$("#theform").submit(function() { 
    var formval = $("#theinput").val(); 
    if(formval == "") { //or some better test 
     alert("input value"); //or some other alert... 
     return false; 
    } else { 
     return true; 
    } 
}); 

Возврат false сделает недействительным щелчок, чтобы отправить форму.

Edit: Если, как вы говорите, в комментариях вы хотите, чтобы отключить подачу формы до требования не будут выполнены для поля ввода (ов)

$("#inputfield").live("keyup", function(){ 
    if($("#inputfield").val() == "") { 
     $('#button').attr("disabled", true); 
    } else { 
     $('#button').attr("disabled", false); 
    } 
}); 

Вы хотите использовать "keyup "обработчик событий, чтобы разрешить отправку текста первым.см. мой пример: on jsbin

+0

Если они уволены до ввода текста, не делает их бесполезными для той цели, для которой я намеревался использовать их (что должно было проверить, содержат ли поля ввода текст)? Какой другой механизм я могу использовать вместо этого (чтобы включить/отключить кнопку отправки в зависимости от того, содержат ли поля ввода текст)? – ChrisW

+0

Вы можете поместить тест insubmit, чтобы проверить, есть ли что-то в поле ввода. – jjclarkson

+0

Выполнение этого было бы немного позже, чем я хотел: обычно, в настольном приложении, по крайней мере, включить/отключить кнопку «ОК» диалогового окна в реальном времени в зависимости от того, является ли он действительным/кликабельным. Вы говорите, вместо этого, чтобы кнопка была доступна кликабельно все время (так что onsubmit всегда может быть вызван), но для проверки onsubmit (и я предполагаю, чтобы отображалось сообщение об ошибке, чтобы сказать, что требуется поле). Я понимаю, что это обычный/обычный способ сделать это в браузере; Мне было интересно, поддерживает ли технология (т. Е. Поведение доступных событий) другой интерфейс. – ChrisW