2015-04-11 1 views
0

Так что я пытаюсь изменить стиль окна выбора, если значение не изменяется, т.е. пользователь ничего не выбрал. Это yesnoCheck - это функция, которая показывает дополнительное поле ввода, если выбрана опция «other». Я не думаю, что это влияет на эту проверку формы. Такой же валидатор отлично работает с полем ввода, но он не будет работать с полем выбора.Javascript Проверка формы не работает для элемента select

У меня также есть selectedIndex == 0, но он не работает.

HTML:

<form name="myForm" method="post" action="" onsubmit="return(validate());"> 
<label for="lastname">Sukunimesi:</label> 
<input type="text" id="lastname" name="lastname" /><br /> 

<select id="car" name="car" onchange="javascript:yesnoCheck()"> 
    <option id="noCheck" value="none">Valitse automerkkisi</option> 
    <option id="noCheck" value="1">Lada</option> 
    <option id="noCheck" value="2">Mosse</option> 
    <option id="noCheck" value="3">Volga</option> 
    <option id="noCheck" value="4">Vartburg</option> 
    <option id="yesCheck" value="other">Muu</option> 
</select> 
<input type="submit" value="Submit" /> 
</form> 

JS:

<script type="text/javascript"> 
function yesnoCheck() { 
if (document.getElementById("yesCheck").selected) { 
    document.getElementById("ifYes").style.display = "block"; 
} 
else document.getElementById("ifYes").style.display = "none"; 
} 

function validate() { 
if (document.myForm.lastname.value.length < 3) { 
    document.getElementById("lastname").className = "required"; 
    return false; 
} 

if (document.myForm.car.value == "none") { 
    document.getElementById("car").className = "required"; 
    return false; 
} 
alert ("Everything is fine!"); 
} 
</script> 
+0

ID должен быть уникальным – Jonathan

+0

Значение по умолчанию для выбора не является «none», оно пустое, поэтому стиль не изменится. –

+0

Ну, я получил его, удалив «return false»; из первого if-statement – user1589375

ответ

0

Ваш код работает проверить имя формы и убедитесь, что форма существует до того, как скрипт запускается.

function check(){ 
 
    if (document.myForm.car.value == "none") { 
 
    document.getElementById("car").style.border = "1px solid #900"; 
 
    document.getElementById("car").style.backgroundColor = "#ff9"; 
 
    return false; 
 
} 
 
}
<form name="myForm"> 
 
    <select id="car" name="car" onchange="javascript:yesnoCheck()"> 
 
    <option id="noCheck" value="none">Valitse automerkkisi</option> 
 
    <option id="noCheck" value="1">Lada</option> 
 
    <option id="noCheck" value="2">Mosse</option> 
 
    <option id="noCheck" value="3">Volga</option> 
 
    <option id="noCheck" value="4">Vartburg</option> 
 
    <option id="yesCheck" value="other">Muu</option> 
 
</select> 
 
</form> 
 
<button onclick="check()">Run script</button>

+0

Это странно ... Я изменил немного больше кода в исходное сообщение, если это имеет значение. Если я удалю проверку для поля ввода, он просто переходит к предупреждению, и он полностью пропускает другой if-statement. – user1589375

+0

Вы проверили свою консоль на наличие ошибок? также попробуйте использовать console.log() в шагах функции, чтобы проверить ваши значения. – kurt

+0

Я не получаю ничего в консоли, хотя я добавил console.log() в части функции – user1589375

0

Таким образом, решение было удалить return false; из функции.

Смежные вопросы