2015-11-06 73 views
3
<form action="#" class="group" method="post" onsubmit="return checkforblank()"> 
    <legend><span class="number">1</span>Departing & Arriving</legend> 
    <fielset class="col-sm-6"> 
     <label for="FDestination">From</label> 
     <select name="Location" id="Location"> 
      <option value="Please Select">Please Select</option> 
      <option value="Newport">Newport</option> 
      <option value="Mahdi">Mahdi</option> 
      <option value="Cardiff">Cardiff</option> 
      <option value="Cilo">Cilo is</option> 
     </select> 
    </fieldset> 
</form> 

<script> 
    function checkforblank(){ 
     if (document.getElementsByID('Location').value== "Please Select") { 
      alert('Please enter first name'); 
      document.getElementById('Location').style.borderColor = "red"; 
      return false; 
     } 
    } 
</script> 

如何在用户从字段集中选择“请选择”选项时显示错误?如何使用JavaScript在HTML中验证“选择”标签

+1

有一个在您的文章错字。 document.getElementsByID('Location')。value应该是document.getElementById('Location')。值 – Payson

+0

@Payson我建议发布这个答案。另外,尝试使用无论您使用哪种浏览器来测试代码的开发工具。这将是一个伟大的资产,在节省时间和未来的挫折:) –

+0

@LukeG谢谢。好的提示 – Payson

回答

3

如何在用户从字段集中选择“请选择”选项时显示错误?

您已经验证表单提交,现在你只需要添加相同的验证功能选择onchange

function checkforblank() { 
 
    
 
    var location = document.getElementById('Location'); 
 
    var invalid = location.value == "Please Select"; 
 
    
 
    if (invalid) { 
 
     alert('Please enter first name'); 
 
     location.className = 'error'; 
 
    } 
 
    else { 
 
     location.className = ''; 
 
    } 
 
    
 
    return !invalid; 
 
}
.error {border: 1px red solid;}
<form action="#" class="group" method="post" onsubmit="return checkforblank()"> 
 
    <legend><span class="number">1</span>Departing & Arriving</legend> 
 
    <fielset class="col-sm-6"> 
 
     <label for="FDestination">From</label> 
 
     <select name="Location" id="Location" onchange="checkforblank()"> 
 
      <option value="Please Select">Please Select</option> 
 
      <option value="Newport">Newport</option> 
 
      <option value="Mahdi">Mahdi</option> 
 
      <option value="Cardiff">Cardiff</option> 
 
      <option value="Cilo">Cilo is</option> 
 
     </select> 
 
    </fieldset> 
 
    <button>Save</button> 
 
</form>

你不会看到警告的演示,如它不允许在片段沙盒iframe :(

+0

非常感谢谢谢! ,说如果我有另一个选择选项具有完全相同的选项和价值也ID我怎么可以使数据验证那里呢?我应该只为该部分再创建一个流程,还是让我使用完全相同的验证而不必再次编写另一个流程的方法更为简单。 –

0

为什么不使用t他required关键字?需要HTML5,但不需要依赖JS。有关其他信息,请参阅the documentation

:required:focus { 
 
    box-shadow: 0 0 6px rgba(255,0,0,0.5); 
 
    border: 1px red solid; 
 
    outline: 0; 
 
}
<form action="#" class="group" method="post" onsubmit="return checkforblank()"> 
 
    <legend><span class="number">1</span>Departing & Arriving</legend> 
 
    <fielset class="col-sm-6"> 
 
    <label for="FDestination">From</label> 
 
    <select name="Location" id="Location" required> 
 
     <option value="">Please select</option> 
 
     <option value="Newport">Newport</option> 
 
     <option value="Mahdi">Mahdi</option> 
 
     <option value="Cardiff">Cardiff</option> 
 
     <option value="Cilo">Cilo is</option> 
 
    </select> 
 
    </fieldset> 
 
    <input type="submit" value="Submit"> 
 
</form>


注意到,这不是在所有的浏览器运行良好后,或者在所有输入我与许多输入类型做出a fiddle(但不是所有的HTML5的人都包括在内)。这样,您可以检查required属性是否在您需要的浏览器中正常工作。在这个时候,JS可能确实是您完全跨浏览器安全的最佳选择。

0

function validateForm() {  
 
    if (document.getElementById('Location').value== "Please Select") 
 
    { 
 
     alert('Please enter first name'); 
 
     document.getElementById('Location').style.borderColor = "red"; 
 
     return false; 
 
    }  
 
}
<form name="myForm" action="#" 
 
onsubmit="return validateForm()" method="post"> 
 
<select name="Location" id = "Location" > 
 
    <option value = "Please Select" >Please Select </option> 
 
    <option value="Newport">Newport</option> 
 
    <option value="Mahdi">Mahdi</option> 
 
    <option value="Cardiff">Cardiff</option> 
 
    <option value="Cilo">Cilo is </option> 
 
</select> 
 
<input type="submit" value="Click"> 
 
</form>