2013-06-21 3 views
3

사용자가 페이지를 떠날 경우 사용자에게 경고하기 위해 양식의 저장되지 않은 데이터를 감지합니다. 이것은 primefaces calendar 요소를 제외한 모든 요소에 대해 지금까지 작동합니다.primefaces 캘린더 요소의 변경 사항을 감지하는 방법은 무엇입니까?

현재 내 접근 방식은 answer과 관련됩니다. 하지만 캘린더 요소에서는 작동하지 않습니다. 변경 리스너가 일반적으로 프로그래밍 방식으로 설정된 값에 대해 작동하지 않는다는 것을 알게되었습니다. 아마 이것이 내 문제의 이유입니다. 그래서 모든 캘린더 요소에 클릭 및 흐림 수신기를 등록하여 매우 간단한 "변경 리스너"를 구현하려고했습니다. 클릭 리스너에서 캘린더 요소의 현재 값을 임시 저장합니다. 흐림 수신기에서 저장된 값과 현재 값을 비교합니다. 그러나 블러 리스너 내에서 캘린더 요소의 변경된 값을 가져올 수 없으므로이 접근 방식이 작동하지 않습니다. 나는 여러 가지 방법으로 값을 얻으려고했다 :

$(this).val(); 
this.value; 
$(this).html(); 
$(this).attr('value'); 

그러나 나는 각각 오래된 값을 얻는다. 그래서 나는 "간단한 변화 청취자"- 접근이 잘 작동하지 않는다고 생각합니다.

내 primefaces 버전은 3.4.2입니다.

JSF 구현 (아마 관련이없는)입니다 : 인 Mojarra 2.1.6

답변

3

내가 primefaces에 대해 아무것도 몰라하지만 JQuery와 UI 달력을 사용합니다. 따라서 onSelect 옵션을 사용하여 변경 사항을 감지 할 수 있습니다.

$('.hasDatepicker').each(function() { 
    var onSelect = $(this).datepicker('option', 'onSelect'); 
    $(this).datepicker('option', 'onSelect', function() { 
    // some change happend here, set your flag that the form is dirty e.g. 
    setConfirmUnload(true); 
    // we call the original onSelect to not break the primefaces ajax change event 
    if(onSelect) { return onSelect.apply(this, arguments); } 
    }); 
}); 
관련 문제