代码之家  ›  专栏  ›  技术社区  ›  mikepenz

jquery验证引擎,如果我在页面加载后添加一个元素,是否不进行实时验证?

  •  1
  • mikepenz  · 技术社区  · 14 年前

    目前我正在使用这个验证插件:( http://www.position-absolute.com/articles/jquery-form-validator-because-form-validation-is-a-mess/ )

    但在证实这一点上,我有一个问题。

    如果我想验证一个从一开始就不存在的元素,它只在我按下Submit时验证它。但我希望能够在元素得到验证的同时,特别是焦点丢失。在一个元素上,它一直在那里,我可以输入,焦点丢失,如果我将值更改为任何正确的值,它就会写“出错的东西”,并取消显示。但是,如果我对用jquery append函数添加的元素执行相同的操作,那么在我按下submit之前,它不会执行任何操作。

    任何人一个简单的解决方案。也许使用jquery.live函数?

    这是我的剧本:

    var use_ajax=true;
    $.validationEngine.settings={};
    
    $("#contact-form").validationEngine({
        inlineValidation: true,
        promptPosition: "centerRight",
        success : function(){use_ajax=true},
        failure : function(){use_ajax=false;}
     })
    

    这是通过append添加的元素示例:

    <tr>
       <td><label for="email">Nummer</label></td>
       <td><input type="text" value="" id="nummer" name="nummer" class="validate[required]"></td>
       <td>&nbsp;</td>
    </tr>
    

    我第一个接受的答案不适用于:

          $("#contact-form").validationEngine({
            ajaxSubmit: true,
            ajaxSubmitFile: "submit.php",
            ajaxSubmitMessage: "Contact saved succesful! <br> <img src=''/> <a href='test.php'>TestLink</a>",
            ajaxSubmitExtraData: "contact=john",
            success :  false,
            failure : function() {}
          });
    
    1 回复  |  直到 10 年前
        1
  •  3
  •   Nealv    14 年前

    这是正常的。

    当您将验证绑定到输入时,焦点、模糊等的绑定绑定到输入。添加输入项时,它们不会绑定。

    要将它们绑定到,请在添加新输入后再次调用验证绑定。

    可能是因为绑定的元素将获得第二个绑定,所以您可能需要解除绑定验证器:

    $.removeData($('#my_form_id'),'validator');
    

    然后再绑起来

    $('#my_form_id').validate()
    

    @编辑以释放对象上的任何绑定,可以执行以下操作 .unbind() 这是为艰难的事件准备的。我认为jqTransform适用于类选择器?如class=“jqTransform”,您可以尝试删除该类