jQuery Mobile选择菜单打开为对话框

时间:2011-06-13 08:46:21

标签: jquery event-handling jquery-mobile

我有一个'pagebeforeshow'处理程序,用于清除文本框的值并选择菜单。

$("#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会自动打开一个新对话框,而不是在我点击它时下拉列表,并在我从选择菜单中选择一个选项时再次触发事件。 是否有解决方法或离开以阻止事件触发?

3 个答案:

答案 0 :(得分: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');
});

我有:

  • 使用了this $("#addSchedulePage")
  • 链接.html().hide()
  • 使用了您的变量lstAppliancelstScheduleTaskType

答案 1 :(得分:0)

确定。坐下来思考我的程序流程后,我设法通过改变处理事物的方式来解决这个问题。

这是该计划的流程。 schedulePage(点击添加按钮) - > addSchedulePage(点击选择菜单) - >对话框包含所有可用选项。

schedulePage - > addSchedulePage('pagebeforeshow'被解雇)

选择菜单对话框 - > addSchedulePage('pagebeforeshow'被解雇) - 在我从我的选择菜单中选择我想要的选项后,我的所有值都被清除。

如果你在我的问题中注意到我想在事件'pagebeforeshow'被触发时清除值。 因此,当页面显示时,我没有清除值,而是在我点击schedulePage中的“添加按钮”时清除了值。这是有效的,因为当我关闭addSchedulePage时,jquerymobile只是隐藏它并且它仍然在DOM中。

我不确定这是否是正确的做事方式,但它确实解决了我的问题。

答案 2 :(得分:0)

我有同样的问题并解决了它。 这也可以解决它:

Stackoverflow link to issue