2

我在输入字段时第一个 keyup 事件的 Parsley 错误消息#myTestField

这个值太短了。它应该有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 的一个已知问题,GitHub 上有一个问题 #52

我也尝试在相同的输入#Id 上使用removeItem()后跟,addItem()但也没有工作。

我仍在尝试找出解决方法

4

1 回答 1

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 :)

于 2013-02-05T14:00:58.040 回答