在 jQuery Mobile 中刷新 2 个表单元素不起作用?

Posted

技术标签:

【中文标题】在 jQuery Mobile 中刷新 2 个表单元素不起作用?【英文标题】:Refreshing 2 form elements in jQuery Mobile doesn't work? 【发布时间】:2013-09-17 22:43:35 【问题描述】:

我有一个带有表单的 jQuery Mobile 应用程序。 当有人填写表单时,表单有多个表单元素,它存储在 localStorage 中。

填写完一张表格后,您可以在历史记录页面上查找旧表格。 当有人打开旧表单时,需要根据 localStorage 信息填写表单元素。我已经使用第一个下拉列表进行了这项工作,但是当我向页面添加复选框时,只有下拉框会刷新。

我的 javascript 代码:

if (key !== "")

    key = key.replace("?key=", "");

    var string = localStorage.getItem(key);
    var array = string.split(",");

    $("#client option[value='" + array[0] + "']").attr("selected", "selected");
    $("#location option[value='" + array[1] + "']").attr("selected", "selected");
    $("#locationnumber option[value='" + array[2] + "']").attr("selected", "selected");

    $("#turbine_id option[value='" + array[3] + "']").attr("selected", "selected");
    $("#turbine_type option[value='" + array[4] + "']").attr("selected", "selected");
    $("#turbine_brand option[value='" + array[5] + "']").attr("selected", "selected");

    $('select').selectmenu('refresh'); //This is the refresh method

    $('#check_maintenance').attr('checked', true);
    $('#check_failure').attr('checked', false);
    $('#check_inspection').attr('checked', true);
    $('#check_warranty').attr('checked', false);
    $('#check_assignment').attr('checked', true);
    $('#check_reportedbyclient').attr('checked', false);
    $('#check_management').attr('checked', true);
    $('#check_restpoint').attr('checked', false);
    $('#check_report').attr('checked', true);

    $('input:checkbox').checkboxradio('refresh'); //This is the refresh method

似乎无法在一个函数中刷新两个或多个不同的表单元素。 也许其他人知道正确或更好的方法。


编辑:

感谢您的回答奥马尔。 但问题似乎是,当我刷新我的选择菜单时,其余的功能都没有执行。

这就是我刷新几个 html 菜单的方式

$('select').selectmenu('refresh');

我在这条线下面的所有内容都没有被执行。

【问题讨论】:

【参考方案1】:

编辑

要在选择菜单中选择一个选项,请使用以下命令。

$('#selectmenu_id option:eq(N)').prop('selected',true);
$('#selectmenu_id') .selectmenu('refresh');

其中N是选项的索引号。


您需要使用.prop(),然后刷新每个复选框。

Demo

这将立即取消选中所有复选框。

$('[type=checkbox]').prop('checked', false).checkboxradio('refresh');

这将通过每个复选框,以防您要选中/取消选中特定的复选框。

var checkboxes = $.mobile.activePage.find('[type=checkbox]');

$.each(checkboxes, function () 
  $(this).prop('checked', false).checkboxradio('refresh');
);

【讨论】:

我之前试过这个方法,但它不适合我想做的事情,因为checked的值是由一个可以是真或假的var设置的,所以选择它们不是一个选项 @KoenHendriks 然后你需要取消选中特定的,即$('#check_maintenance').prop('checked', false).checkboxradio('refresh'); 感谢您提供的帮助!但它不是我要找的。我编辑了我的主要问题也许你现在知道我的意思了 @KoenHendriks 好的,我明白你的意思,检查我更新的答案。

以上是关于在 jQuery Mobile 中刷新 2 个表单元素不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

登录页面上的 jQuery Mobile 表单验证

changePage 后 jQuery Mobile 刷新页面

jQuery Mobile:如何正确提交表单数据

在jquery mobile中刷新动态创建的页面

jquery mobile各类组件刷新方法

jQuery Mobile-jquery Mobile 怎么用ajax提交表单