2011-06-13 1 views
3

내 텍스트 상자 및 선택 메뉴의 값을 지우는 'pagebeforeshow'처리기가 있습니다.jQuery Mobile 선택 메뉴가 대화 상자로 열림

$("#addSchedulePage").live("pagebeforeshow", function(event){ 
    $("#message", $("#addSchedulePage")).html("");//clear messagebox 
    $("#message", $("#addSchedulePage")).hide();//hide messagebox 
    $("#startDate", $("#addSchedulePage")).val(""); 
    $("#time", $("#addSchedulePage")).val(""); 

    var lstAppliance = $("#lstAppliance", $("#addSchedulePage")); 
    var lstScheduleTaskType = $("#lstScheduleTaskType", $("#addSchedulePage")); 
    lstAppliance[0].selectedIndex = 0; 
    lstScheduleTaskType[0].selectedIndex = 0; 

    $("#lstAppliance", $("#addSchedulePage")).selectmenu('refresh'); 
    $("#lstScheduleTaskType", $("#addSchedulePage")).selectmenu('refresh'); 

}); 

여기가 문제입니다. 내 선택 메뉴 옵션이 너무 길어지면 jqm은 자동으로 새 대화 상자를 엽니 다. 목록을 클릭하면 선택 메뉴에서 옵션을 선택할 때 이벤트가 다시 트리거됩니다. 이벤트 발생을 막을 수있는 대안이 있습니까?

+0

사용하는 JQM의 버전? –

+0

야간 빌드를 사용합니다. – root

+0

공식 릴리스 인 a4.1은 야간 빌드 변경 (야간)으로 만 지원됩니다. 이 [이 도움이 될] [1] [1] : http://stackoverflow.com/ 나는 베타 버전은 –

답변

0

확인 lstScheduleTaskType을 사용했다. 앉아서 내 프로그램의 흐름을 통해 생각 나는 내가 처리하는 방식을 변경 하여이 문제를 해결할 수 있습니다.

이것은 프로그램의 흐름입니다. schedulePage (추가 버튼 클릭) -> addSchedulePage (선택 메뉴 클릭) -> 사용 가능한 모든 옵션이있는 대화 상자.

schedulePage -> addSchedulePage ('pagebeforeshow'해고)

선택 메뉴 대화 -> addSchedulePage ('pagebeforeshow'해고) - 나는 내 선택에서 원하는 옵션을 선택한 후 내 모든 값이 지워집니다 메뉴.

나는 'pagebeforeshow'이벤트가 발생하면 값을 지우고 싶었다. 따라서 페이지가 표시 될 때 값을 지우는 대신 schedulePage에서 '추가 버튼'을 클릭하면 값이 지워졌습니다. 이 기능은 addSchedulePage를 닫았을 때 jquerymobile이 단순히 숨기고 DOM에 남아 있기 때문입니다.

이것이 올바른 방법이지만 확실하게 내 문제를 해결했는지 확실하지 않습니다.

3

내 대답은 당신의 문제에 대한 도움이되지 않습니다,하지만 당신은 당신의 코드를 단순화 할 수 있습니다

$("#addSchedulePage").live("pagebeforeshow", function(event){ 
    $("#message", this).html("").hide(); //clear and hide messagebox 
    $("#startDate", this).val(""); 
    $("#time", this).val(""); 

    var lstAppliance = $("#lstAppliance", this); 
    var lstScheduleTaskType = $("#lstScheduleTaskType", this); 
    lstAppliance[0].selectedIndex = 0; 
    lstScheduleTaskType[0].selectedIndex = 0; 

    lstAppliance.selectmenu('refresh'); 
    lstScheduleTaskType.selectmenu('refresh'); 
}); 

나는이 :

  • $("#addSchedulePage")this하는 reffers을 사용했다.
  • 체인 .html().hide()은 변수 lstAppliance
+1

아 .. 감사합니다. 컨텍스트를 지정하는 데 'this'키워드를 사용할 수 있는지 잘 모릅니다.또한 단추 등이 충돌하는 것을 원하지 않기 때문에 컨텍스트를 지정하는 습관이 있습니다. – root

0

나는 똑같은 문제가있어서 그것을 풀었다. 이뿐만 아니라 당신을 위해 그것을 해결할 수 있습니다

Stackoverflow link to issue

+0

이 질문은 내가 링크 한 것과 중복되어 있습니까? 그렇다면 해당 플래그를 지정하십시오. – KatieK