首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用jQuery验证表单元素

使用jQuery验证表单元素
EN

Stack Overflow用户
提问于 2020-05-30 21:24:12
回答 2查看 124关注 0票数 1

我正在尝试制作一个验证页面,当在文本框中输入文本时,我需要停止说“请填写表单”。我只需要在文本框为空时进行验证

代码语言:javascript
运行
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="mailto:kyletab03@gmail.com" name="myForm" method="post" onsubmit="return validation();" enctype="text/plain">
  Name:
  <input type="text" name="name" id="name" /><br />
  Surname:
  <input type="text" name="surname" id="surname" /><br />
  Email:
  <input type="email" name="email" id="email" /><br />
  Message:
  <textarea name="Message" maxlength="3500"></textarea><br />
  <button id="submit" onclick="validation()">Submit</button>
</form>
<script>
  var name = $("#name").value;
  var surname = $("#surname").value;
  var email = $("#email").value;
  var comments = $("#comments").value;
  function validation() {
    if (name == "" || surname == "" || email == "" || comments == "") {
      document.myForm.name.setCustomValidity("Please fill out this field");
      document.myForm.surname.setCustomValidity("Please fill out this field");
      document.myForm.email.setCustomValidity("Please fill out this field");
      document.myForm.comments.setCustomValidity("Please fill out this field");
    } else {
      document.myForm.name.setCustomValidity();
      document.myForm.surname.setCustomValidity();
      document.myForm.email.setCustomValidity();
      document.myForm.comments.setCustomValidity();
    }
  }
</script>

EN

回答 2

Stack Overflow用户

发布于 2020-05-30 23:11:02

您的代码显示了一个错误,因为在最后一行中,您使用的是"comments“而不是" message ",setCustomValidity()还接受一个包含错误消息的字符串或一个空字符串,为了使其正常工作,请考虑使用文档的方法来检索元素,此外,您还需要添加reportValidity(),因此代码应如下所示

代码语言:javascript
运行
复制
    if (name == "" || surname == "" || email == "" || comments == "") {
    name=document.getElementById('name')
    name.setCustomValidity("Please fill out this field");
    name.reportValidity()
}
else
    name.setCustomValidity('');
    name.reportValidity()

此外,还可以考虑使用helper函数来动态使用元素id。

更新:你可以使用这个,它会起作用的

代码语言:javascript
运行
复制
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="mailto:kyletab03@gmail.com" name="myForm" method="post" id='myform' enctype="text/plain">
  Name:
  <input type="text" name="name" id="name" required="required"/><br />
  Surname:
  <input type="text" name="surname" id="surname" required="required" /><br />
  Email:
  <input type="email" name="email" id="email" required="required" /><br />
  Message:
  <textarea name="Message" id="message" maxlength="3500" required="required"></textarea><br />
  <button onlclick='validation()'>Submit</button>
</form>
<script>

function validate(inputID)
{
 var input = document.getElementById(inputID);
 var validityState_object = input.validity;
 if (validityState_object.valueMissing)
 {
  input.setCustomValidity('Please fill out this field');
  input.reportValidity();
 }
 else
 {
  input.setCustomValidity('');
  input.reportValidity();
 }
}
   function validation() {
   var name= document.getElementById('name').value
   var surname=document.getElementById('surname').value
   var email=document.getElementById('email').value
   var message=document.getElementById('message').value  

      validate('name') 
      validate('surname') 
      validate('email') 
      validate('message') 

 if (name!=''&&surname!=''&&email!=''&&message!='') {       
          $('#myform').submit();

    }   
}

</script>
票数 0
EN

Stack Overflow用户

发布于 2020-05-31 04:45:53

使用jquery验证表单的最简单方法是使用jquery validate。

我强烈建议你不要在表单中直接使用mailto发布url,因为垃圾邮件机器人和类似的东西可能会抓住你的表单,并试图用它来发送垃圾邮件。我在我为客户创建的所有联系我们页面上添加了jquery、验证和验证码。

代码语言:javascript
运行
复制
$('#frmsendemail').validate({ // Send Email Form
    ignore: '.ignore',
    rules: {
        seFullname: {
            required: true,
            minlength: 2
        },
        seContact: {
            required: true,
            phonesUK: true,
        },
        seMail: {

            required: true,
            email: true
        },
        seMsg: {
            required: true
        },
        seCaptchaStatus: {
            required: function () {
                // verify the user response

                var thisresponse = grecaptcha.getResponse(seCaptcha);
                if (thisresponse == "") {
                    return true;
                } else {
                    return false;
                }
            }
        }
    },
    messages: {
        seFullname: {
            required: "Please Enter Your Name",
            minlength: jQuery.validator.format("Please ensure you enter a name more than {0} characters long.")
        },
        seContact: {
            required: "Please Enter a contact number",
            phonesUK: "Your Contact Numer should be in the format of: 07123 456 789 or 0123 123 4567",
            minlength: jQuery.validator.format("Your contact number should me at least {0} numbers.")
        },
        seMail: {
            required: "Please Enter Your Email Address",
            email: "Your email address should be in the format of &quot;username@domain.com&quot;"
        },
        seMsg: "Please Enter A Message",
        seCaptchaStatus: "Please complete reCaptcha."
    },
    highlight: function (element) {
        var id_attr = "#" + $(element).attr("id");
        $(element).closest('.pure-form-control-group').removeClass('border-success icon-valid').addClass('border-error icon-invalid');
        $(id_attr).removeClass('glyphicon-ok icon-valid').addClass('glyphicon-remove icon-invalid');
    },
    unhighlight: function (element) {
        var id_attr = "#" + $(element).attr("id");
        $(element).closest('.pure-form-control-group').removeClass('border-danger icon-valid').addClass('border-success icon-valid');
        $(id_attr).removeClass('glyphicon-remove icon-invalid').addClass('glyphicon-ok icon-valid');
    },
    showErrors: function (errorMap, errorList) {

        $(".seerrors").html('<h6><i class="fa fa-exclamation-circle"></i>&nbsp;Your form contains ' +
            this.numberOfInvalids() +
            ' errors, see details below.</h6');
        this.defaultShowErrors();
    },
    validClass: "border-success",
    invalidClass: "border-danger",
    errorClass: "border-danger",
    errorElement: 'div',
    errorLabelContainer: ".seerrors",
    submitHandler: function () {

        //Now that all validation is satified we can send the form to the mail script.
        //Using AJAX we can send the form, get email sent and get a response and display a nice
        //message to the user saying thank you.
        //For Debugging
        //console.log("Sending Form");

        $.post("../php/sendemail.php", $('#frmsendemail').serialize(), function (result) {
            //do stuff with returned data here
            //result = $.parseJSON(result);
            console.log(result.Status);

            if (result.Status == "Error") {
                //Create message from returned data.
                //This helps the user see what went wrong.
                //If its a form error they can correct it, 
                //if not then they can see whats wrong and alert us.


                var message3 = '<p style="font-size:10pt;text-align:left !important;">We encountered an error while processing the information you requested to send.</p><p style="font-size:10px;text-align:left;">We appologise for this, details of the error are included below.<p><hr><p style="text-align:left;font-size:10px;">Error Details:' + result.Reason.toString() + '</p><pstyle="text-align:left;font-size:10px;">If this error persists, please email enquiries@cadsolutions.wales</p>';
                // Show JConfirm Dialog with error.
                $.confirm({
                    title: '<h2 style="text-align:left"><i class="fa fa-exclamation-circle"></i>&nbsp;We encountered an error<h2>',
                    content: message3,
                    type: 'red',
                    // Set Theme for the popup
                    theme: 'Material',
                    typeAnimated: true,
                    buttons: {
                        close: function () {}
                    }
                });

以上代码来自我为联系我们脚本创建的页面。该脚本使用name=属性设置页面上的所有输入,然后在不符合验证规则时为输入设置消息,突出显示和取消突出显示有错误的字段,在set div标记中显示错误消息,然后在表单有效时处理表单提交。:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62103081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档