2015-12-02 81 views
1

我已经创建了自定义验证器的自动字段,它适用于第一对夫妇的一切,但是当我添加另外两个字段时,验证程序只是演示如何验证第一个。汽车领域验证程序liferay javascript

这是我的代码:

<div id="groupwork-fields" > 
     <div class="lfr-form-row lfr-form-row-inline"> 
      <div class="row-fields"> 
       <aui:input fieldParam='name0' id="name0" cssClass="full-size" 
        name="name0" 
        label='<%=AwardConstants.LABEL_NAME %>' 
        value=""> 
        <aui:validator name="custom" errorMessage="fill-name"> 
         function (val, fieldNode, ruleValue) { 
          var result = true; 
           var selector = document.getElementById("<portlet:namespace/>select-group").value; 
           if (selector == 1 && val === "") { 
            result = false; 
           } 
           return result; 
         } 
        </aui:validator> 
       </aui:input> 
       <aui:input cssClass="full-size" 
        id="email0" fieldParam='email0' 
        name="email0" 
        label='<%=AwardConstants.LABEL_EMAIL %>' 
        value=""> 
        <aui:validator name="maxLength">100</aui:validator> 
        <aui:validator name="email"></aui:validator> 
        <aui:validator name="custom" errorMessage="fill-email"> 
         function (val, fieldNode, ruleValue) { 
          var result = true; 
          var name = document.getElementById("<portlet:namespace/>name0").value; 
          if (name !== "" && val === "") { 
            result = false; 
          } 
          return result; 
         } 
        </aui:validator> 
       </aui:input> 
      </div> 
     </div> 
    </div> 

这是我的脚本:

<aui:script> 
    AUI().use('liferay-auto-fields',function(A) { 
     new Liferay.AutoFields({ 
      contentBox: '#groupwork-fields', 
      fieldIndexes: '<portlet:namespace />groupworkIndexes' 
     }).render(); 
    }); 
    </aui:script> 

的事情是我总是第一个输入的值,我想利用自己的对。

感谢

回答

1

为我所看到的似乎是一个已知的bug:https://issues.liferay.com/browse/LPS-54188

+0

也许这是一个错误,但谷歌搜索我已经看到了关于他自己的规则定义脚本的一些例子:autoFields.on(“克隆”,功能(新野),虽然我不知道如何继续 –

0

这里,

我已经在汽车领域试图用自定义的验证年龄和它工作

<aui:input name="age" value='' label="Age"></aui:input> 


<aui:script use="liferay-auto-fields"> 
// declares rules 
var rules= {}; 

// override default error messages 
var fieldStrings = {}; 

AUI().use('aui-form-validator', 
    function(A) { 
    var DEFAULTS_FORM_VALIDATOR = A.config.FormValidator; 
    A.mix(
     DEFAULTS_FORM_VALIDATOR.RULES, 
     { 
     customRuleForAge:function (val, fieldNode, ruleValue) { 
      var result = false; 
      if (val >=18) { 
       result = true; 
      } 
      return result; 
      }, 
     }, 
     true 
    ); 
    A.mix(
     DEFAULTS_FORM_VALIDATOR.STRINGS, 
     { 
      customRuleForAge:"Age Should Be more than 18", 
     }, 
     true 
    ); 

    rules = { 
     <portlet:namespace/>age: { 
     customRuleForAge: true 
     } 
    }; 

    new A.FormValidator(
        { 
        boundingBox: '#<portlet:namespace/>researchSubjectForm', 
        fieldStrings: fieldStrings, 
        rules: rules, 
        showAllMessages: true 
        } 
       ); 
    } 
); 


    new Liferay.AutoFields({ 
    contentBox: '#research-subject-fields', 
    fieldIndexes: '<portlet:namespace />rowIndexes', 
    on: { 
     'clone': function(container){ 
      // container.guid will be the number for newly generated row. 

      rules["<portlet:namespace />age" + container.guid] = {customRuleForAge: true}; 

      fieldStrings["<portlet:namespace />age"+container.guid] = {customRuleForAge}; 

      } 
     } 

    }).render(); 

</aui:script>