Validation js将重点放在已验证的div on error上

Validation js将重点放在已验证的div on error上,validation,parsley.js,Validation,Parsley.js,我需要至少填写表格中三个字段中的一个。所以我在包含这三个字段的div元素上使用了欧芹验证。工作得很好,唯一的问题是出错时,它不能像正常输入那样获得焦点 以下是一些更具体的细节(这是haml语法): 然后在我的javascript文件中添加自定义的oneChildRequired验证 Parsley.addValidator('oneChildRequired', { requirementType: 'string', //expect format of strin

我需要至少填写表格中三个字段中的一个。所以我在包含这三个字段的div元素上使用了欧芹验证。工作得很好,唯一的问题是出错时,它不能像正常输入那样获得焦点

以下是一些更具体的细节(这是haml语法):

然后在我的javascript文件中添加自定义的
oneChildRequired
验证

      Parsley.addValidator('oneChildRequired', {
        requirementType: 'string', //expect format of string t be input ids separated by '|' e.g. "mobile_phone|home_phone|work_phone" not sure how to allow varying number of requirements so this will suffice
        validateString: function(_value, requirement, instance) {
          var multiSelector = "#enrolment_form_"+requirement.replace(/\|/g, ', #enrolment_form_');// gives multi selector like '"#enrolment_form_mobile_phone, #enrolment_form_home_phone, #enrolment_form_work_phone"'
          var $inputs = instance.$element.find(multiSelector);
          var valid = false;
          $inputs.each(function(i){
            if($(this).val()){
              valid = true; // one input has a value
              return false; //break out of the loop
            }
          });
          // no input has the target value (requirement2)
          return valid;
        }
      });
我在源代码中找到了
返回此项。_focusedField.focus()

.focus()
我认为只对输入元素有效

所以为了修复它,我用

      if(this._focusedField.is(':input')){
        return this._focusedField.focus();
      } else {
        return this._focusedField.attr("tabindex",-1).focus();
      }
else块将触发div元素上的焦点


我想知道是否有更好的方法来解决这个问题。

PR如果你能找到一个通用的方法来解决这个问题,欢迎你。
      if(this._focusedField.is(':input')){
        return this._focusedField.focus();
      } else {
        return this._focusedField.attr("tabindex",-1).focus();
      }