简体   繁体   English

HTML-Javascript表单验证不起作用

[英]Html-Javascript form Validation not working

I am trying to validate that all fields of my form are filled out with Javascript, but it is just not working. 我正在尝试验证表单的所有字段均已用Javascript填充,但是它无法正常工作。 I am new to web development, any help is greatly appreciated. 我是Web开发的新手,非常感谢您的帮助。 Here is my HTML: 这是我的HTML:

<form name="form" action="actionFG.php" method="post" onsubmit="return val()";>
    <p>First Quarter Grade:</p>
    <select name = "q1"><option selected value="0" disabled="disabled"> input grade</option>
        <option value="1">A</option>
        <option value="2">B+</option>
        <option value="3">B</option>
        <option value="4">C+</option>
        <option value="5">C</option>
        <option value="6">D</option>
        <option value="7">F</option>
    </select>

    <p>Second Quarter Grade:</p>
    <select name = "q2">
        <option selected value="0" disabled="disabled"> input grade</option>
        <option value="1">A</option>
        <option value="2">B+</option>
        <option value="3">B</option>
        <option value="4">C+</option>
        <option value="5">C</option>
        <option value="6">D</option>
        <option value="7">F</option>
    </select>

    <p>Third Quarter Grade:</p>
    <select name = "q3">
        <option selected value="0" disabled="disabled"> input grade</option>
        <option value="1">A</option>
        <option value="2">B+</option>
        <option value="3">B</option>
        <option value="4">C+</option>
        <option value="5">C</option>
        <option value="6">D</option>
        <option value="7">F</option>
    </select>

    <p>Fourth Quarter Grade:</p>
    <select name = "q4">
        <option selected value="0" disabled="disabled"> input grade</option>
        <option value="1">A</option>
        <option value="2">B+</option>
        <option value="3">B</option>
        <option value="4">C+</option>
        <option value="5">C</option>
        <option value="6">D</option>
        <option value="7">F</option>
    </select>

    <p><input type="submit" value="Enter"></p>
</form>

And here is my JavaScript: 这是我的JavaScript:

function val(){
  if (form.q1.selectedIndex == 0) {
    alert('Please Enter Your Grade for Quarter 1');
    return false;
  } else if (form.q2.selectedIndex == 0) {
    alert('Please Enter Your Grade for Quarter 2');
    return false;
  } else if (form.q3.selectedIndex == 0) {
    alert('Please Enter Your Grade for Quarter 3');
    return false;
  } else if (form.q4.selectedIndex == 0) {
    alert('Please Enter Your Grade for Quarter 4');
    return false;
  }

  return true;
}

Working code without javascript: 没有javascript的工作代码:

 <form> <p>First Quarter Grade:</p> <select required> <option value=""> input grade</option> <option value="1">A</option> <option value="2">B+</option> <option value="3">B</option> <option value="4">C+</option> <option value="5">C</option> <option value="6">D</option> <option value="7">F</option> </select> <p>Second Quarter Grade:</p> <select required> <option value=""> input grade</option> <option value="1">A</option> <option value="2">B+</option> <option value="3">B</option> <option value="4">C+</option> <option value="5">C</option> <option value="6">D</option> <option value="7">F</option> </select> <p>Third Quarter Grade:</p> <select required> <option value=""> input grade</option> <option value="1">A</option> <option value="2">B+</option> <option value="3">B</option> <option value="4">C+</option> <option value="5">C</option> <option value="6">D</option> <option value="7">F</option> </select> <p>Fourth Quarter Grade:</p> <select required> <option value=""> input grade</option> <option value="1">A</option> <option value="2">B+</option> <option value="3">B</option> <option value="4">C+</option> <option value="5">C</option> <option value="6">D</option> <option value="7">F</option> </select> <button type="submit">submit</button> </form> 

I have just added the required attribute to the select elements, this marks them as required. 我刚刚将所需的属性添加到选择元素,这将它们标记为必需。

Edit 编辑

Added snippet instead of JS Bin - Thanks to evolutionxbox 添加了代码段而不是JS Bin-感谢evolutionxbox

Here is a native HTML5 example how to get simple validation without using Javascript. 这是一个HTML5原生示例,如何不使用Javascript进行简单验证。

This simple example works fine without Javascript. 没有Javascript,这个简单的示例就可以正常工作。 What I 've done? 我做了什么? The select elements got the required attribute. 选择元素具有必需的属性。 So a user has to select a value. 因此,用户必须选择一个值。 If the value of these select elements is empty when the form is submitting, you will get an error message as a tooltip next to the empty select element. 如果在提交表单时这些选择元素的值为空,则您将在空选择元素旁边收到一条错误消息,作为工具提示。

This is the simplest way. 这是最简单的方法。 Beyond that every modern browser handels the validation different. 除此之外,每个现代浏览器都会使验证有所不同。 The tooltips with the error messages are displayed different from browser to browser. 带有错误消息的工具提示在不同的浏览器中显示不同。 If you want a consistent layout, you have to deal with the Constraint Validation API of HTML5 . 如果要保持一致的布局,则必须处理HTML5Constraint Validation API

 <form> <p> <label for="select-1">Select 1</label> <select name="select-1" id="select-1" required> <option hidden>choose</option> <option value="1">Value 1</option> <option value="2">Value 2</option> </select> </p> <p> <label for="select-2">Select 2</label> <select name="select-2" id="select-2" required> <option hidden>choose</option> <option value="1">Value 1</option> <option value="2">Value 2</option> </select> </p> <button type="submit">submit</button> </form> 

Your code works for me. 您的代码对我有用。 I had the < script > in the < head >. 我在<head>中有<script>。

Of course, I had to add this... 当然,我必须添加这个...

<input type="submit" />
</form>

Other than that, I got form validation and valid submit when all fields were filled in Chrome, IE and Firefox. 除此之外,当所有字段都填写在Chrome,IE和Firefox中时,我得到了表单验证和有效提交。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM