javascript - 单击提交时进行 JQuery 表单验证,检查所有输入字段是否为空并显示 innerHTML 错误不起作用?

标签 javascript jquery html css

我正在尝试使用 HTML 和 JQuery 创建一个表单验证,以检查单击“提交”按钮时所有输入字段是否为空。如果其中任何一个为空,提交按钮将不会处理表单,并将空输入字段的颜色更改为黄色并在表单底部显示一条消息(在 .

这是相关的 HTML 代码:

<body>
<div id="div_main">
    <form action="process.html" method="POST">
        <div id="div_left">
    <p>Name:</p>
    <p>Age:</p>
    <p>Gender:</p>
    </div>
    <div id="div_right">
        <p><input type="text" id="name" name="name"></p>
        <p><input type="text" id="age" name="age"></p>
        <p><input type="text" id="gender" name="gender"></p>
    </div>
    <input type="submit" id="chksubmit" value="submit"/>
    <div id="divmessage"></div>
    </form>
</div>
</body>

这些是我执行验证的相关 JQuery 代码:

<script src="jquery-3.3.1.min.js"></script>
<script> 
$(document).ready(function(){
    $('#chksubmit').click(function(){
        if($('#name').val()==''){
            $('#name').css('background-color','yellow');
            $('#divmessage').append("Please enter Name.")
            success = false;
        }
    });

    $('#chksubmit').click(function(){
        if($('#age').val()==''){
            $('#age').css('background-color','yellow');
            $('#divmessage').append("<br>Please enter Age.")
            success = false;
        }
    });

    $('#chksubmit').click(function(){
        if($('#gender').val()==''){
            $('#gender').css('background-color','yellow');
            $('#divmessage').append("<br>Please enter Gender.")
            success = false;
        }
    });
});
</script>

当我在输入框为空的情况下单击“提交”时,表单仍然通过而不是停止。我不明白为什么。

最佳答案

检查下面的例子

$(document).ready(function() {
  $('#chksubmit').on("click", function(e) {
    //clean divmessage
    $('#divmessage').html("");
    //or use $("#div_main form input") to check all inputs
    $("#name, #age, #gender").each(function() {
      $(this).css('background-color', '');;
      if ($(this).val().replace(/\s+/g, " ").trim() == '') {
        $(this).css('background-color', 'yellow');
        success = false;
        $('#divmessage').append("<br>Please enter " + $(this).data("for"))
      }
    });
    e.preventDefault();
  });
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<div id="div_main">
  <form action="process.html" method="POST">
    <div id="div_left">
      <p>Name:</p>
      <p>Age:</p>
      <p>Gender:</p>
    </div>
    <div id="div_right">
      <p><input type="text" data-for="Name" id="name" name="name"></p>
      <p><input type="text" data-for="Age" id="age" name="age"></p>
      <p><input type="text" data-for="Gender" id="gender" name="gender"></p>
    </div>
    <input type="submit" id="chksubmit" value="submit" />
    <div id="divmessage"></div>
  </form>
</div>

关于javascript - 单击提交时进行 JQuery 表单验证,检查所有输入字段是否为空并显示 innerHTML 错误不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54499227/

相关文章:

javascript - 在 JavaScript 中连接数组字典

javascript - 函数式编程: Calling a Curried Function

javascript - svg 路径上的 jQuery 鼠标悬停事件

javascript - 未捕获的类型错误 : Cannot create property 'style' on string 'wtd_background_image'

javascript - 从浏览器中粘贴事件之外的剪贴板读取文件

java - 如何将对象从 JavaScript 发送到 Struts 2 中的 Action 类?

javascript - 有没有办法在完成第一个对象后调用另一个对象上的 jquery 函数?

javascript - 如何在没有基本 href 的情况下获取路径?

Javascript TIFF 图像转换

html - 父 Div 背景未填充子项