2017-12-13 18 views
0

내 xpages 애플리케이션에서 필드 (xp : inputText)에 입력 된 문자의 양에 따라 제출 버튼 (또는 비활성화 된 속성)의 가시성을 제어하려고합니다. .xpages - 부분 새로 고침 - 입력 한 문자 수에 따라 버튼을 숨 깁니다.

부분 새로 고침 https://openntf.org/XSnippets.nsf/snippet.xsp?id=standby-dialog-custom-control에 대한 xsnippet을 구현했지만 입력 텍스트 컨트롤에서 각 키 이벤트의 새로 고침 대화 상자가 나타나는 값의 길이를 계산 한 경우

어떻게 이것을 피할 수 있습니까? 일시적으로 대기 대화 상자가 나타나지 않도록하거나 자바 스크립트로 클라이언트 쪽에서해야합니까?

+0

사용자가 x 문자 이상을 입력 할 수없는 클라이언트 측 스크립트를 추가하십시오. 사용자 또는 재로드에 대한 메시지가 필요하지 않습니다. 최대 문자 수에 도달 할 때 입력을 막으십시오. –

답변

1

당신은 아무도 해킹 없다는 것을 확인하려는 경우 당신이 정말로 클라이언트 - 서버 왕복 (예를 사용하여 각 키 이벤트에 귀하의 입력 텍스트 컨트롤의 값의 길이를 계산해야하는 경우 클라이언트 측 JS), 그리고 당신이 forementioned XSnippet를 사용하고 대기 대화 상자가 키를 누를 때마다에 표시하지 않으려는 가정, 여기 당신이 일반적으로해야 할 일 :

  • 당신이을 수행 할 때을 사용하면 options 개체를 마지막 함수 매개 변수로 전달할 수 있습니다. 이 options 객체가 끝까지 전달되는

    XSP.partialRefreshPost('#{id:yourId}', {dontShowDialog: true}) 
    
  • 처럼 그냥 (당신이 이미에 뭔가를 넣어 한 경우)이 객체에 또 하나의 속성을 추가하거나 하나의 속성을 가진 새로운 개체를 만들고, 그것을해야 뭔가 라인 # 39에서 partialrefresh-start 이벤트가 게시되고 해당 개체가 마지막 요소로 노출됩니다.
  • 라인 # 137이이 이벤트에 가입합니다. 당신이 당신의 options에 따라

  • 좀 조건문과 대화를 만들이 다음 줄 바꿈 기능의 몸에 options을 읽을 수

    지금
    dojo.subscribe('partialrefresh-start', null, function(method, form, refreshId, options) 
    

    처럼, 그것은 선언 함수에 또 하나의 매개 변수를 추가 매개 변수. 모든 것은 다음과 같이 할 수 있습니다

    dojo.subscribe('partialrefresh-start', null, function(method, form, refreshId, options) { 
        if (options) { 
         if (options.dontShowDialog) return; 
        } 
        StandbyDialog_Do = true; 
        StandbyDialog_Started(); 
    }); 
    

모든 클라이언트 측 이벤트 핸들러 (false로 설정 submit 속성을 사용하여 하나를 사용할 때의 경우입니다 위의 기록은 서버 측 처리기를 사용하는 경우. . _partialRefresh 방법의 CSJS를 호출하기 전에

  • : 당신이 마지막이라고 _partialRefresh 방법으로 추가 지정 속성을 통과 할 수 없기 때문에 상황이 조금 복잡해지고있다 그러나, 나는이 문제를 처리하는 한 가지 방법을 생각할 수 엔진이 만든다. 준비 중 하나는 페이지의 일부 숨겨진 입력 필드에 특정 값을 설정하는 것입니다. 여기서 우리는 하이재커 XSnippet에 $$xspsubmitid' field, which is given the value of your declared event handler client id. Then you can read the value of $$ xxpsubmitid` 필드에 관심이 있으며 이벤트 처리기의 ID가 포함되어있는 경우 대기 대화 상자를 표시하지 않습니다.이 방법은 훨씬 덜 유연하지만 작동해야합니다.

P. 위에 적힌 것을 모두 시험해 보지 않았지만 시도하고 실패한다면, 조사하고 고칠 수있어서 기쁩니다.

0

클라이언트 스크립트를 통해이 작업을 수행 할 수 있습니다. 항상 데이터를 제출할 필요가 없습니다.

XSP.getElementById('id').hidden=true;