简体   繁体   English

基本表单验证不起作用

[英]basic form validation not working

This simple form validation is not working and it's irritating me. 这种简单的表单验证无法正常工作,这很烦我。 Please let me know what is the problem. 请让我知道是什么问题。 I have been trying to find a bug for almost two hours but can't find it. 我已经尝试了将近两个小时的错误,但是找不到它。 Please help me. 请帮我。

Take a look at code: 看一下代码:

 function validate() { if( $("#full_name").val() == "" ) { alert( "Please provide your name!" ); $("#full_name").focus() ; return false; } if( $("#email").val() == "") { alert( "Please provide your Email!" ); $("#email").focus() ; return false; } if( $("#message").val() == "" ) { alert( "Please Enter Message" ); return false; } return( true ); } 
 <div class="form"> <h2> Contact Us </h2> <form name="c_form" action="#" method="post" onsubmit="return(validate());"> <div class="input"> <input type="text" name="full_name" id="full_name" placeholder="Full Name"> </div> <div class="input"> <input type="text" name="email" id="email" placeholder="Email Address"> </div> <div class="input textarea"> <textarea id="message" name="message" placeholder="Enter Message Here"></textarea> </div> <div class="input button"> <button id="button"> Send </button> </div> </form> </div> 

Why not using HTML5's native "required" attribute? 为什么不使用HTML5的本机“必需”属性? Nowadays, most browsers will happily interpret it without problems. 如今,大多数浏览器都会很乐意地对其进行解释,而不会出现任何问题。 If you want to support older browsers, just use a library like h5validate , but (please) keep your html clean. 如果您想支持较旧的浏览器,只需使用h5validate之类的库,但是(请)保持html干净。

Take a look on the same form using those attributes. 使用这些属性查看相同的表单。 No JS, no DIV containers, just plain native Html: 没有JS,没有DIV容器,只是普通的本地HTML:

 input, textarea { display:block; margin-bottom: 5px; } 
 <h2> Contact us without JS </h2> <form name="c_form" action="#" method="post"> <input type="text" name="full_name" placeholder="Full Name" required> <input type="email" name="email" placeholder="Email Address" required> <textarea name="message" placeholder="Enter Message Here" required></textarea> <button type="submit"> Send </button> </form> 

I made a few changes and it works. 我进行了一些更改,它可以正常工作。 The following snippet: 以下代码段:

  1. Include jQuery. 包括jQuery。
  2. Add all the contents inside $(function () {}) . 将所有内容添加到$(function () {})

 function validate () { if( $("#full_name").val() == "" ) { alert( "Please provide your name!" ); $("#full_name").focus() ; return false; } if( $("#email").val() == "") { alert( "Please provide your Email!" ); $("#email").focus() ; return false; } if( $("#message").val() == "" ) { alert( "Please Enter Message" ); return false; } return( true ); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <div class="form"> <h2> Contact Us </h2> <form name="c_form" action="#" method="post" onsubmit="return(validate());"> <div class="input"> <input type="text" name="full_name" id="full_name" placeholder="Full Name"> </div> <div class="input"> <input type="text" name="email" id="email" placeholder="Email Address"> </div> <div class="input textarea"> <textarea id="message" name="message" placeholder="Enter Message Here"></textarea> </div> <div class="input button"> <button id="button"> Send </button> </div> </form> </div> 

I added an id of "c_form" to your html and removed the onsubmit property and used the following javascript code, which seemed to work. 我在您的html中添加了一个ID“ c_form”,并删除了onsubmit属性,并使用了以下javascript代码,该代码似乎有效。 The key is calling ev.preventDefault(); 关键是调用ev.preventDefault();。

$(document).ready(function () {
$("#c_form").submit(validate);
});

function validate(ev)
{
  if( $("#full_name").val() == "" )
  {
    alert( "Please provide your name!" );
    $("#full_name").focus() ;
    ev.preventDefault();
    return false;
  }

  if( $("#email").val() == "")
  {
    alert( "Please provide your Email!" );
    $("#email").focus() ;
    ev.preventDefault();
    return false;
  }

  if( $("#message").val() == "" )
  {
    alert( "Please Enter Message" );
    ev.preventDefault();
    return false;
  }

  return true;
}

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

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