2016-12-08 1 views
1

저는 LR 6.2 GA6 포틀릿에서 this example의 유효성 검사기를 적용하려고했습니다. 그러나, 나는 그것을 작동시킬 수 없습니다. 흥미롭게도 validator-tag는 잘 작동하지 않습니다.
이것은 내가Liferay 6.2 폼 검증 문제

<aui:form name="<portlet:namespace />address" action="<%=doSmthURL %>" id="fm"> 
<aui:container> 
    ... 
    <aui:row> 
     <aui:col> 
      <aui:input name="conditions1" label="text" type="checkbox" id="conditions1"> 
      </aui:input> 
     </aui:col> 
    </aui:row> 
    <aui:row> 
     <aui:col> 
      <aui:input name="conditions2" label="conditions2" type="checkbox" id="conditions2"/> 
     </aui:col> 
    </aui:row> 
</aui:container> 
<aui:button-row> 
    <aui:button type="cancel" value="Back"></aui:button> 
    <aui:button type="submit" value="Finish"></aui:button> 
</aui:button-row></aui:form> 

을 사용하고 형태입니다 그리고 이것은 AUI입니다 : 스크립트 부분

<aui:script> 
var rules = { 
     conditions1:{ 
      required:true 
     }, 
     conditions2:{ 
      required:true 
     } 
} 
var fieldStrings = { 
     conditions1:{ 
      required:"Bitte nimm die allgemeinen Geschäftbedingungen an" 
     }, 
     conditions2:{ 
      required:"Bitte nimm die allgemeinen Geschäftbedingungen an" 
     } 
} 
AUI().use(
     'aui-form-validator', 
     function(A) { 
      new A.FormValidator(
      { 
       boundingBox: "#fm", 
       fieldStrings: fieldStrings, 
       rules: rules, 
       showAllMessages: true 
      } 
      ) 
     } 
); 

나는 그것이 작동하지 않는 이유를 모르겠습니다. 유효성 검사기 태그를 사용하면 아무것도 수행하지 않으므로 JavaScript 코드 전체에 문제가있을 수 있습니다.

누군가가 나를 도울 수 있기를 바랍니다.

종류와 관련, JSM

+2

boundingBox 속성이 올바르게 지정되지 않은 것 같습니다. AUI 태그가 ID/이름에 포틀릿 네임 스페이스를 추가했기 때문에'# fm'을 추가 해보시겠습니까 –

+0

''내부에''태그를 사용하지 않는 이유가 있습니까? ? – Byran

답변

2

죄송합니다, 그 문서는 혼란하고 업데이트해야합니다.

가능하다면 <aui:input> 안에 <aui:validator>을 사용하시기 바랍니다.

<aui:input name="conditions1" label="text" type="checkbox" id="conditions1"> 
    <aui:validator name="required" errorMessage="Bitte nimm die allgemeinen Geschäftbedingungen an" /> 
</aui:input> 

이렇게하면 Portal이 필요한 모든 JS를 처리합니다.

<aui:validator을 사용할 수없는 경우 Liferay.Form을 사용하여 양식에 첨부 된 양식 검사기에 액세스하는 것이 좋습니다. 현재는 추가로 첨부하고 있기 때문에 충돌 할 수 있습니다.

<aui:script use="liferay-form"> 
    var form = Liferay.Form.get('<portlet:namespace />fm'); 

    var oldFieldRules = form.get('fieldRules'); 

    var newFieldRules = [ 
     { 
      body: function (val, fieldNode, ruleValue) { 
       return (val !== '2'); 
      }, 
      custom: true, 
      errorMessage: 'must-not-equal-2', 
      fieldName: 'fooInput', 
      validatorName: 'custom_fooInput' 
     }, 
     { 
      fieldName: 'fooInput', 
      validatorName: 'number' 
     } 
    ]; 

    var fieldRules = oldFieldRules.concat(newFieldRules); 

    form.set('fieldRules', fieldRules); 
</aui:script> 
관련 문제