2016-11-21 4 views
1

여러 개의 행이있는 여러 개의 데이터 표가 포함 된 PDF가 있습니다. 동적 XFA 데이터 PDF입니다. 유효성 검사는 한 필드에만있는 한 꽤 잘 작동하지만 지금은보다 복잡한 유효성 검사를 수행합니다. 하나의 필드가 채워지면 다른 필드가 채워 져야하고 반대의 경우도 마찬가지입니다. Foo 필드에 유효성 검사 JavaScript를 추가했으며 Bar 필드와 유사하게 유효성 검사 JavaScript를 추가했습니다. 문제는 유효하지 않은 값으로 필드 밖으로 나가면 같은 필드에 대해 유효성 검사 메시지가 여러 번 표시된다는 것입니다. 필드가 유효한지 아닌지에 따라 xfa.event.rc를 true/false로 설정하려고했습니다. 이것은 PDF의 다른 필드에서 성공적으로 사용되고 있지만 효과가없는 것으로 보이며 xfa.event.rc에 대한 설명서를 찾을 수 없으므로 향후 제공되지 않을 수 있습니다. 나는 그것이 반환 코드였던 것으로 생각한다. 지금 EC4를 사용하고 있지만이 PDF는 원래 ES3 용으로 작성되었습니다. 다음은 "Foo"유효성 검사 이벤트의 JavaScript입니다. 모든 메시지를 동일한 상자에 표시하도록 선택해도 문제가 해결되지 않습니다. 동일한 메시지를 여러 번 표시합니다. 메시지에 줄 번호 변수를 추가했기 때문에 이것을 알고 있습니다.JavaScript를 사용하여 Adobe Livecycle에서 중복 된 유효성 검사 메시지를 방지하려면 어떻게해야합니까?

MyXmlRoot.FirstItemsList.ItemDataRow.Foo::validate - JavaScript, client) 
this.validationMessage = ""; 
if (!this.isNull && this.rawValue != ""){ 
    var bar= xfa.resolveNode("MyXmlRoot.FirstItemsList.ItemDataRow.Bar"); 
    if (bar.isNull || bar.rawValue == ""){ 
     this.validationMessage = "A bar is required if a foo has been entered.";     
    } 
} 

답변

1

나는이 방법을 시도하고 나를 위해 일한 :

Bar 필드 유효성 검사 이벤트 :

MyXmlRoot.FirstItemsList.ItemDataRow.Bar::validate - (JavaScript, client) 
script.validateFooBar(Foo, this); 

Foo 필드 유효성 검사 이벤트 :

MyXmlRoot.FirstItemsList.ItemDataRow.Foo::validate - (JavaScript, client) 
this.validationMessage = "A bar is required if a foo has been entered."; 
script.validateFooBar(this, Bar); 

script scriptobject :

foo가 작성되는 동안
  • 내가 채울

    1. 내가 bar의 값을 삭제할 때 나는 단지 하나의 경고를 얻을 이제 enter image description here
      :
      MyXmlRoot.FirstItemsList.ItemDataRow.#variables[0].script - (JavaScript, client) 
      function validateFooBar(foo, bar){ 
          return !(!foo.isNull && bar.isNull);  
      } 
      

      그리고 여기 내 계층 구조의 그림은 명확하게하기 foo의 값은 bar이 비어 있습니다.

  • +1

    고마워요! 내가 찾은 것을 추가하겠다. (http://help.adobe.com/livedocs/acrobat_sdk/9/Acrobat9_HTMLHelp/wwhelp/wwhimpl/common/html/wwhelp.htm?context=Acrobat9_HTMLHelp&file=JS_API_AcroJS.88.582.html) validate 메소드는 event.rc를 수신하지 않기 때문에 아무 효과가 없습니다. 이벤트 스크립팅 창 내에서 코드에서 true 또는 false를 직접 반환하려고하면 구문 오류가 발생하지만 true 또는 false를 반환하는 스크립트를 호출 할 수 있습니다. 문법 오류 때문에 처음에 event.rc를 설정하려고했습니다. – rhopper