如何覆盖Parsley JS焦点行为

时间:2015-06-01 14:57:17

标签: javascript jquery parsley.js

当新用户访问该页面并输入系统中已存在的电子邮件时,我想执行以下操作:

  1. 显示错误消息。
  2. 显示箭头。
  3. 然后移动焦点(光标) 到密码字段。
  4. 使用jQuery我能够将焦点移至密码字段,但几毫秒后,焦点将被拉回电子邮件字段Parsley错误消息。

    我尝试过使用data-parsley-focus="..."data-parsley-no-focus,但这对我没有任何帮助。我还查看了源代码,我发现validate.focusedField.focus()正在强制将焦点重新带回带错误的字段,但无法弄清楚如何停止

    那么,有没有办法来覆盖这种行为?

    enter image description here

1 个答案:

答案 0 :(得分:2)

以下代码按预期工作,但您可能需要根据代码调整某些方面。

我做了什么:

  1. 每当某个字段出现错误时,请检查它是否是特定字段(在我的情况下是 field1 ),如果是,则执行某些操作(在这种情况下,请关注 field2 输入)。
  2. data-parsley-focus="none"添加到表单中,以避免自动关注第一个输入错误(默认情况下为行为)。
  3. $(document).ready(function() {
      $.listen('parsley:field:error', function(parsleyField) {
        if (parsleyField.$element.attr('name') === 'field1') {
          $("input[name=field2]").focus();
        }
      });
    });
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/parsley.js/2.0.7/parsley.min.js"></script>
    <form id="myForm" data-parsley-validate data-parsley-focus="none">
      <input type="text" name="field1" required data-parsley-minlength="50" data-parsley-trigger="focusout" />
      <input type="text" name="field2" required />
      <input type="submit" />
    </form>

    如果您遇到麻烦,请提供一个小提琴并在您的问题中添加相关代码。