3 回答
TA贡献1829条经验 获得超6个赞
我已经编辑了我的原始帖子并包含了您的一些进一步输入元素。我目前使用该类form-control来决定必须检查哪些元素(您当然可以使用专门用于此目的的另一个类名)。然后我去使用Array.reduce()返回整体布尔值的方法检查它们。根据该值,进一步处理是否会发生......
为了简化错误处理,我使用每个测试变量的名称作为错误消息,我在每个输入元素之后的额外 div 中显示该错误消息。
var chk=Array.from(document.querySelectorAll('.form-control')),
msg="You must enter a value for ";
document.querySelector('#subm').addEventListener('click',
function(){
if (chk.reduce(function(ac,el){
el.parentNode.querySelector('div.error').innerHTML=
el.value=="" ? msg+el.name : "";
return ac || el.value==""},
false)) return false;
console.log('OK, your data will be submitted ...');
// and further code ...
})
div.error {color: red;}
<div class="form-group">
<label id = "EmailLabel" >Email address</label>
<input type="email" class="form-control" name="Email"
autocomplete = "off" autofocus id="FormControlInput1"
placeholder="name@example.com"><div class="error"></div>
</div>
<div class="form-group">
<label id = "Fname" >First Name</label>
<input type="text" class="form-control" name = "Fname" autocomplete = "off" id="FnameFormControlInput" placeholder="John"><div class="error"></div>
</div>
<div class="form-group">
<label id = "Lname" >Last Name</label>
<input type="text" class="form-control" name ="Lname" autocomplete = "off" id="LnameFormControlInput" placeholder="Doe"><div class="error"></div>
</div>
<div class="form-group">
<label for="FamilySize">How Many in Your Household</label>
<select class="form-control" name="FamilySize" id="FamilySize">
<option disabled selected value="">Size</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>Good god ya'll</option>
</select><div class="error"></div>
</div>
<div class="form-group">
<label for="AgeGroup">Select Age Group</label>
<select multiple class="form-control" name="AgeGroup" id="AgeGroup">
<option>0-15</option>
<option>16-24</option>
<option>25-36</option>
<option>37-45</option>
<option>45-Dead</option>
</select><div class="error"></div>
</div>
<button id="subm">submit</button>
TA贡献1826条经验 获得超6个赞
要访问选定的元素值或它的innerHTML,可以使用以下方法:
var e = document.getElementById("FamilySize");
// For the option tag value attribute:
var value = e.options[e.selectedIndex].value;
// For the option text:
var text = e.options[e.selectedIndex].text;
getElementsByName 方法没有单一选项。要访问标签的内容,您应该使用:
var labelInnerHTML = document.getElementsByName("FamSizeLable")[0].innerHTML
另请注意,您的代码中有拼写错误:
name = "FamSizeLable"
应该:
name = "FamSizeLabel"
TA贡献1946条经验 获得超3个赞
我终于通过给我的标签一个 id 解决了这个问题
<div class="form-group">
<label for="FamilySize" name = "FamSizeLable" id = "FamSizeLable">How Many in Your Household</label>
<select class="form-control" name="FamilySize" id="FamilySize">
<option disabled selected value="">Size</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
<option>5</option>
<option>Good god ya'll</option>
</select>
</div>
然后修改我的 JavaScript 以选择选择器的 id 并检查值"":
else if(document.querySelector('#FamilySize').value==""){
//Here the # means id
document.querySelector('#FamSizeLable').innerHTML = "***You Must Select a Family Size***";
document.querySelector('#FamSizeLable').style.color = "red";
return false;
}
添加回答
举报