2012-03-18 5 views
0

Я использую VS2010, C# для разработки ASP.NET, я написал небольшую функцию Javascript, которая позволяет отключить кнопку изначально только после того, как пользователь вводит фразу в текстовое поле (это текстовое поле не должно быть пустым), он работает нормально, но есть небольшая проблема, кнопка не включена точно, когда пользователь вводит слова, он должен нажать вкладку или щелкнуть по экрану, чтобы кнопка включалась! вот моя функция JS:javascript не сразу активирует мою кнопку

 <script type="text/javascript" > 
     function onWeightChange() { 
      document.getElementById('btnFinish').disabled = true; 
      document.getElementById('btnConfirmQuestion').disabled = true; 
      if (document.getElementById('txtWeight').value != "") { 
       document.getElementById('btnFinish').disabled = false; 
       document.getElementById('btnConfirmQuestion').disabled = false; 
      } 
     } 
</script> 

и я призываю моих JS в коде следующим образом:

  txtWeight.Attributes.Add("onchange", "return onWeightChange();"); 

что происходит здесь не так? Я хочу, чтобы мои кнопки, чтобы получить включены сразу после ввода текста в текстовом поле, и там не должна быть никакой необходимости менять фокус с текстового поля

благодаря

+1

использовать 'onkeypress' вместо' onchange'. –

+0

спасибо, я тестирую его –

ответ

2

onchange пожаров, когда пользователь покидает элемент, он не срабатывает, когда элемент имеет фокус.

Вам необходимо использовать ключевое событие onkeypress или onkeyup в сочетании с событием onchange. Вам нужно событие onchange, так как можно изменить значение элемента управления без нажатия клавиш!

+0

Вы правы, использование может вставить значение! –

1

Я считаю, что правильное событие, к которому нужно привязать, - это событие keydown, как показано на http://www.w3schools.com/jsref/event_onkeydown.asp или, возможно, в зависимости от поведения, которое вам нужно.

+0

http://w3fools.com/ – epascarello

+0

Я этого не знал, спасибо. Я думаю, что ссылка w3schools по-прежнему показывает информацию о ключевых событиях эффективно и правильно. – Spike

0

Событие onchange() будет срабатывать только при выходе пользователя из окна ввода. Вы хотите использовать событие <input type="text" id="txtWeight" onkeyup="onWeightChange(this)" />

<script type="text/javascript" >   
    function onWeightChange(el) {        
     document.getElementById('btnFinish').disabled = e.value.length;      
     document.getElementById('btnConfirmQuestion').disabled = el.value.length;  
    } 
</script> 
+1

вставьте текст в текстовое поле с файловым меню, работает ли ваш код? – epascarello

+1

hmm ... хороший вопрос. Не уверен, что для клавиш управления применяется клавиша. Позвольте мне проверить это и вернуться к вам. –

+1

Да, событие onkeyup запускается ctrl-v, однако его можно поменять с помощью мыши правой кнопкой мыши, вставить. В таких случаях вы можете сохранить событие onchange или добавить в него событие onpaste. –

1

Вы должны попробовать метод OnKeyUp, потому что OnChange срабатывает только когда ваше текстовое поле теряет фокус, и в том случае, если кто-то вставляет что-то в вас TextBox вам следует попробовать onpaste метод эта комбинация должна работать хорошо.

txtWeight.Attributes.Add("onkeyup", "return onWeightChange();"); 
txtWeight.Attributes.Add("onpaste", "return onWeightChange();"); 
Смежные вопросы