admin管理员组文章数量:1420145
I'm trying to get an error message when select is set to default and nothing is selected. For input fields the code works, but I can't figure out where I'm wrong for the select part. Anyone help me?
Fiddle: /
//Error Msg for input field
function validateForm() {
let x = document.forms["myForm"]["fname"].value;
if (x == "") {
alert("Name must be filled out");
return false;
}
}
<input type="text" name="fname" form="myForm">
<select id="select-sex" form="myForm" name="radios">
<option id="opt-default" form="myForm" selected>Select...</option>
<option id="sexuomo" name="radios" value="Male" form="myForm">Uomo</option>
<option id="sexdonna" name="radios" value="Female" form="myForm">Donna</option>
</select>
<button onclick="validateForm()">Submit</button>
<form name="myForm" id="myForm" onsubmit="return validateForm()" method="post">
</form>
I'm trying to get an error message when select is set to default and nothing is selected. For input fields the code works, but I can't figure out where I'm wrong for the select part. Anyone help me?
Fiddle: https://jsfiddle/snake93/1sLtk2a7/2/
//Error Msg for input field
function validateForm() {
let x = document.forms["myForm"]["fname"].value;
if (x == "") {
alert("Name must be filled out");
return false;
}
}
<input type="text" name="fname" form="myForm">
<select id="select-sex" form="myForm" name="radios">
<option id="opt-default" form="myForm" selected>Select...</option>
<option id="sexuomo" name="radios" value="Male" form="myForm">Uomo</option>
<option id="sexdonna" name="radios" value="Female" form="myForm">Donna</option>
</select>
<button onclick="validateForm()">Submit</button>
<form name="myForm" id="myForm" onsubmit="return validateForm()" method="post">
</form>
Share
Improve this question
asked Oct 9, 2021 at 16:05
Snake93Snake93
4765 silver badges22 bronze badges
1
-
document.querySelector('#select-sex').value == 'Select...'
will retrn true if its not filled out – doo_doo_fart_man Commented Oct 9, 2021 at 16:10
2 Answers
Reset to default 2Just repeat your logic you used on the input
for the select
:
//Error Msg for input field
function validateForm() {
let x = document.forms["myForm"]["fname"].value;
if (x == "") {
alert("Name must be filled out");
return false;
}
let y = document.forms["myForm"]["radios"].value;
if (y == "Select...") {
alert("Select must be filled out");
return false;
}
}
<input type="text" name="fname" form="myForm">
<select id="select-sex" form="myForm" name="radios">
<option id="opt-default" form="myForm" selected>Select...</option>
<option id="sexuomo" name="radios" value="Male" form="myForm">Uomo</option>
<option id="sexdonna" name="radios" value="Female" form="myForm">Donna</option>
</select>
<button onclick="validateForm()">Submit</button>
<form name="myForm" id="myForm" onsubmit="return validateForm()" method="post">
</form>
However, a much more scalable solution is to add the required
field to your inputs, then use checkValidity()
:
function validateForm(){
const isValid = myForm.checkValidity();
if(!isValid){
alert("Please fill all fields");
}
return isValid;
}
<form name="myForm" id="myForm" onsubmit="return validateForm()" method="post" novalidate>
<input type="text" name="fname" form="myForm" required>
<select id="select-sex" form="myForm" name="radios" required>
<option id="opt-default" value="" form="myForm" selected disabled>Select...</option>
<option id="sexuomo" name="radios" value="Male" form="myForm">Uomo</option>
<option id="sexdonna" name="radios" value="Female" form="myForm">Donna</option>
</select>
<button>Submit</button>
</form>
An <option>
without a value=
defaults to the text value of that option. ie
<option>Seleziona</option>
is the same as
<option value="Seleziona">Seleziona</option>
So you either need to check for "Seleziona" or you need to give it a value.
<option value="">Seleziona</option>
Note: Seleziona es from OPs fiddle
Updated snippet:
//Error Msg for input field
function validateForm() {
let name = document.forms["myForm"]["fname"].value;
let gender = document.forms["myForm"]["radios"].value;
if (name == "" || gender == "") {
alert("Name and gender must be filled out");
return false;
}
}
<input type="text" name="fname" form="myForm">
<select id="select-sex" form="myForm" name="radios">
<option id="opt-default" form="myForm" value="" selected>Seleziona</option>
<option id="sexuomo" name="radios" value="Male" form="myForm">Uomo</option>
<option id="sexdonna" name="radios" value="Female" form="myForm">Donna</option>
</select>
<button onclick="validateForm()">Submit</button>
<form name="myForm" id="myForm" onsubmit="return validateForm()" method="post">
</form>
本文标签: javascriptShow error message when ltselectgt is emptyno selection or defaultStack Overflow
版权声明:本文标题:javascript - Show error message when <select> is emptyno selection or default - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745323026a2653463.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论