2013-04-09 2 views
1

Seaside jQuery onSuccess : 스크립트에 변수 체크를 코딩하려면 어떻게해야합니까?onBlur에 대한 Seaside + jQuery 변수 검사

값 변경을 트리거하는 입력 필드가있는 응용 프로그램이 있으며보기가 다시 렌더링됩니다. 표시된 값을 기반으로 도메인 데이터의 활발한 피드백을 제공하기 위해 잘 작동합니다.

보류중인 변경 사항이있는 경우 '저장'및 '취소'버튼이 표시됩니다. 사용자가 입력 필드 바로 다음에있는 버튼을 클릭하면 입력 필드의 onBlur : 스크립트가 버튼 동작이 발생하지 않도록합니다. 권장 솔루션 (button click event lost due to the alert box in text box onblur event)은 버튼의 'onmousedown'이벤트를 사용하여 onBlur 스크립트가 확인하는 전역 변수를 설정하는 것입니다.

내 테스트 코드에서는 전역 'saveCancelButtonClicked'가 설정되어있는 것을 볼 수 있지만 렌더링 단계를 방지하기 위해 값을 확인하는 방법을 모르겠습니다.

html button 
    onMouseDown: 'saveCancelButtonClicked = 1;'; 
    ... 

html textInput 
onBlur: ((
    html jQuery ajax 
     callback: [:stringValue | self checkValue: stringValue] 
      value: html jQuery this value) 
     onSuccess: (
     (html jQuery id: 'selectedComponent') load html: [:renderer | 
      renderer script: 'console.log(saveCancelButtonClicked); '. 
      self renderSelectedComponentOn: renderer]))] 

저장 버튼을 누르면 console.log에 '1'이 표시됩니다. 그래서 어떻게 값을 확인하고 'self renderSelectedComponentOn :'단계를 건너 뛸까요?

자바 스크립트 (사소한 if 문)로 수행하기는 쉽지만 Seaside에서는 예제를 찾지 못했습니다.

답변

1

요아킴 Tuchel는 해변의 메일 링리스트에이 질문에 대답 ...

onSuccess: (
    (JSStream on: 'saveCancelButtonClicked == 0') then: (
     (html jQuery id: 'portalSelectedComponent') load html: [:renderer | 

... 저장 및 취소 버튼이 포함 렌더링하는 방법 ...

html script: 'saveCancelButtonClicked = 0;' . 

을 모두 저장 및 취소 버튼을 구현합니다 ...

onMouseDown: 'saveCancelButtonClicked = 1;'; 

... '저장'또는 ' 입력란을 업데이트 한 후 'ncel'버튼을 누르면 첫 번째 클릭시 콜백이 실행됩니다. 그리고 포커스를 잃으면 Burur 액션에서 입력 필드가 정상적으로 트리거됩니다.