Усовершенствование скрипта доступности поля в зависимости от выбора в списке.
Вопрос от начинающего изучение JavaScript.
У меня была задача сделать контекстно-зависимое поле, и я нашел подходящее решение на одном англоязычном форуме:
<script>
function findselected(){
var state = document.getElementById('state');
var notus = document.getElementById('notus');
(state.value == "Other")? notus.disabled=false : notus.disabled=true
}
</script>
<form action="" method="POST" name="form1"> <select name="state" id="state" onChange="findselected()"> <option value="NY">NY</option> <option value="NJ">NJ</option> <option value="CT">CT</option> <option value="Other">Other</option> </select> <input type="text" maxlength="50" size="20" id="notus" name="notus" disabled> </form> Последний пункт списка при загрузке страницы может быть неопределен – <option value="Other">Other</option> или определен по умолчанию – <option value="Other" selected="selected">Other</option> (в зависимости от сохраненного ранее выбора). Проблема заключается в следующем: Когда загружается страница с <option value="Other" selected="selected">Other</option> текстовое поле <input type="text" maxlength="50" size="20" id="notus" name="notus" disabled> остается недоступным, а надо чтоб оно было доступным, если пункт Other определен. Жду ваших предложений. |
вызови
findselected() она проверяет, какое значение у селекта? если да, то вызывай. если нет - пиши @ раширяй |
Не разобрался я с findselected()
Решил проблему вот так:
<script>
function slct() {
var state1 = document.getElementById('other');
var notus = document.getElementById('notus');
if(state1.selected == true) { notus.disabled = false;}
}
function findselected(){
var state = document.getElementById('state');
var notus = document.getElementById('notus');
(state.value == "Other")? notus.disabled=false : notus.disabled=true;
}
</script>
</head>
<body onLoad="slct()">
<form action="" method="POST" name="form1" >
<select name="state" id="state" onChange="findselected()">
<option value="NY">NY</option>
<option value="NJ">NJ</option>
<option value="CT" >CT</option>
<option value="Other" id="other" selected="selected">Other</option>
</select>
<input type="text" maxlength="50" size="20" id="notus" name="notus" disabled>
</form>
*(написал функцию, + вызов на onLoad для body и id для требуемого элемента) Не очень изящно, но зато работает. Если у кого будет время прошу показать пример с findselected() |
O_o а чего с ней не разбираться?
смотри :
<form action="" method="POST" name="form1" >
<select name="state" id="state" onChange="findselected()">
<option value="NY">NY</option>
<option value="NJ">NJ</option>
<option value="CT" >CT</option>
<option value="Other" id="other" selected="selected">Other</option>
</select>
<input type="text" maxlength="50" size="20" id="notus" name="notus" disabled>
</form>
<script>
var input = document.getElementById('notus'),
select = document.getElementById('state');
// без привязки к элементу! (this)
function findselected(){
if( select.value === "Other" ){
// если еще не поставили false
// это чтобы каждый раз не дёргать
if( notus.disabled )
notus.disabled = false;
} else {
if( !notus.disabled )
notus.disabled = true;
}
}
select.onchange = findselected;
findselected();
</script>
|
| Часовой пояс GMT +3, время: 06:00. |