Parsley.js 1.x - 表单数据属性动态更改时出错

时间:2013-02-03 23:23:59

标签: jquery parsley.js

输入字段#myTestField时第一个keyup事件的

My Parsley错误消息是

  

此值太短。它应该有 4个字符或更多。

我试着动态改变Parsley字段数据属性,但似乎这不起作用。它将值保留在第一位(html表单),而不考虑JS代码中的修改后的值。

在Chrome上,我可以检查在加载DOM后数据属性值是否已更改。

我的代码是

<form name="myForm" id="myForm">
    <input type="text" name="myTestField" id="myTestField" data-trigger="keyup" data-minlength="4" data-validation-minlength="0" >
    <button id="mySubmitButton" type="submit" >Save</button>
</form>

<script>
// wait for the DOM to be loaded 
    $(document).ready(function() {
    // destroy
    $('#myForm').parsley('destroy');
    // change attribute
    $('#myTestField').attr('data-minlength','2');
    // assign parsley to do the job
    $('#myForm').parsley();
      });
</script>

我做错了什么?

更新:

这是Parsley.js的已知问题,而且是Issue #52 on GitHub

我还尝试在同一输入#Id上使用removeItem()后跟addItem(),但也无效。

我仍在尝试找出解决方法

1 个答案:

答案 0 :(得分:7)

Parsley基于数据属性,由jQuery与.data()

绑定

不幸的是,当你添加data-attr时,它没有绑定到jQuery .data()。您必须动态添加验证器:

<script>
// wait for the DOM to be loaded 
    $(document).ready(function() {
      // destroy
      $('#myForm').parsley('destroy');
      // change attribute
      $('#myTestField').data('minlength', 2);
      // assign parsley to do the job
      $('#myForm').parsley();
    });
</script>

我会添加一个API来动态添加/编辑/删除验证器,而不必调用destroy:)