Изменение доступности списка по вводу в текстовое поле

evshi

Новичок
Изменение доступности списка по вводу в текстовое поле

Есть форма, в ней текстовое поле и выпадающий список, который в первоначальном состоянии=disable. Если в текстовое поле вводится более 5 символов, то выпадающий список должен становиться доступным. Вот пример:

<script>
function if_change()
{
if (document.getElementById('txt').value.length>5)
document.getElementById('sel').disabled=0;
else
document.getElementById('sel').disabled=1;
}
</script>
<form method="post" name="myform" action="" onsubmit="return check();">

<input type="text" onchange="if_change()" оnkeypress="if_change()" оnkeyup=="if_change()" id="txt" name="textfld">

<select id="sel" name="dropfld" disabled>
<option value="0" selected>Выкл.</option>
<option value="1">Вкл.</option>
</select>

<input type="submit" value="Послать">
</form>

Проблема в том, что после вода 5 символов выпадающий список становится доступным, только когда переместить фокус из текстового поля, например, начать кликать по списку или нажать tab.

А как сделать, чтобы список был доступен сразу, как введено больше 5 символов в текстовое поле? Т.е. я могу еще находиться в поле, вбивать текст, но состояние списка уже должно изменяться. Можно ли это как-то сделать?
 

dimagolov

Новичок
onkeypress/down/up

но еще пользователь может скопировать тест в инпут, поэтому проще всего по setInterval проверять oInput.value.length
 

weregod

unserializer
даже не oInput.value.length, а сравнивать oInput.value и некоторое сохранённое previousValue
 

dimagolov

Новичок
weregod, зачем? если условие "список был доступен сразу, как введено больше 5 символов в текстовое поле"? ну и фиг с ним, что будем повторно будем ставить enable при длинне 6, 7 и т.п.

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