Validate Dynamically Added Input fields

前端 未结 10 842
北恋
北恋 2020-11-29 01:39

I have used this jquery validation plugin for the following form.




        
相关标签:
10条回答
  • 2020-11-29 01:55
    $('#form-btn').click(function () {
    //set global rules & messages array to use in validator
       var rules = {};
       var messages = {};
    //get input, select, textarea of form
       $('#formId').find('input, select, textarea').each(function () {
          var name = $(this).attr('name');
          rules[name] = {};
          messages[name] = {};
    
          rules[name] = {required: true}; // set required true against every name
    //apply more rules, you can also apply custom rules & messages
          if (name === "email") {
             rules[name].email = true;
             //messages[name].email = "Please provide valid email";
          }
          else if(name==='url'){
            rules[name].required = false; // url filed is not required
    //add other rules & messages
          }
       });
    //submit form and use above created global rules & messages array
       $('#formId').submit(function (e) {
                e.preventDefault();
            }).validate({
                rules: rules,
                messages: messages,
                submitHandler: function (form) {
                console.log("validation success");
                }
            });
    });
    
    0 讨论(0)
  • 2020-11-29 01:59

    The one mahesh posted is not working because the attribute name is missing:

    So instead of

    <input id="list" class="required"  />
    

    You can use:

    <input id="list" name="list" class="required"  />
    

    Modified version

    0 讨论(0)
  • 2020-11-29 01:59

    You need to re-parse the form after adding dynamic content in order to validate the content

    $('form').data('validator', null);
    $.validator.unobtrusive.parse($('form'));
    
    0 讨论(0)
  • 2020-11-29 01:59
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/jquery-validation@1.17.0/dist/jquery.validate.js"></script>
    
    <script>
        $(document).ready(function(){
            $("#commentForm").validate();
        });
    
        function addInput() {
    
            var indexVal = $("#index").val();
            var index = parseInt(indexVal) + 1
            var obj = '<input id="list'+index+'" name=list['+index+']  class="required" />'
            $("#parent").append(obj);
    
            $("#list"+index).rules("add", "required");
            $("#index").val(index)
        }
    </script>
    
    <form id="commentForm" method="get" action="">
        <input type="hidden" name="index" name="list[1]" id="index" value="1">
        <p id="parent">
            <input id="list1"  class="required" />
        </p>
        <input class="submit" type="submit" value="Submit"/>
        <input type="button" value="add" onClick="addInput()" />
    </form>
    
    0 讨论(0)
  • 2020-11-29 02:08

    In case you have a form you can add a class name as such:

    <form id="my-form">
      <input class="js-input" type="text" name="samplename" />
      <input class="js-input" type="text" name="samplename" />
      <input class="submit" type="submit" value="Submit" />
    </form>
    

    you can then use the addClassRules method of validator to add your rules like this and this will apply to all the dynamically added inputs:

    $(document).ready(function() {
      $.validator.addClassRules('js-input', {
        required: true,
      });
      //validate the form
      $('#my-form').validate();
    });
    
    0 讨论(0)
  • 2020-11-29 02:09

    jquery validation plugin version work fine v1.15.0 but v1.17.0 not work for me.

    $(document).find('#add_patient_form').validate({
              ignore: [],
              rules:{
                'email[]':
                {
                  required:true,
                },               
              },
              messages:{
                'email[]':
                {
                  'required':'Required'
                },            
              },    
            });
    
    0 讨论(0)
提交回复
热议问题