0

在我的 Jquery Mobile 表单中,表单基于 Json 对象动态创建元素。它动态地向表单添加一个编辑按钮。构建表单后,我将所有元素设置为禁用。

如何在 Jquery Mobile 中重新启用表单元素?(不是jQuery)

当用户单击编辑按钮时,它应该启用所有表单元素。禁用效果很好,但我无法让它们启用。

  for (var data_index in data) {
                    var item = data[data_index];

                    for (var key in item) {
                        var field_id = "fld_" + key;
                        // Build the Fields 
                        var $field_container = $('<div data-role="fieldcontain"></div>');
                        //var $field_set = $('<fieldset data-role="controlgroup"></fieldset>');
                        var $field_label = $('<label for="' + field_id + '">' + key + '</label>');
                        var $field_input = $('<input name="' + field_id + '" id="' + field_id + '" placeholder="" value="' + item[key] + '" type="text">');
                        $field_input.attr('disabled', 'disabled');
                        $field_container.append($field_label);
                        $field_container.append($field_input);
                        $view_detail_container.append($field_container);
                    };
                };  

这可以很好地创建表单元素,并且它们被禁用。

这个片段创建了编辑按钮(它可以很好地添加到 DOM),重新启用表单元素的代码在这个事件处理程序中。所有表单元素都是输入。(基本文本输入)

var $action_edit = $('<a id="action_edit" data-role="button">Edit</a>');
            $action_edit.on("click", function (event, ui) {
                // enable all form fields 
                $('#detail_form').children().each(function () {
                    alert('clicked!') // fires everytime just fine
                    var child = $(this);
                    child.attr('disabled', '');
                    child.ready();
                    child.trigger('create');
                }).trigger("create");

            });
            this.AddAction($action_edit);// appends this button to the correct div. 

我查看了 Jquery Mobile 文档,似乎比以前更好,但它仍然需要更好的照顾。

  • 链接是Jquery Mobile 文档中的表单元素页面,如果您在此页面中搜索“禁用表单元素”,您将看到他们告诉您的一段:

通过向元素添加标准的 disabled 属性,可以在标记中禁用所有 jQuery Mobile 小部件,就像使用原生控件一样。每个表单小部件还具有与每个表单小部件一起记录的标准禁用和启用方法。以下是一些禁用小部件的示例

如果您转到 Jquery Mobile 文档中的“文本输入”页面并在该页面中搜索“启用”或“禁用”,则找不到任何内容。此外,它们被解释为“方法”,并且不存在具有该名称的此类方法。所有谷歌搜索都让我尝试...

child.removeAttr('禁用'); // 没有骰子 child.attr('disabled',''); // 没有骰子

有什么我错过的,因为这些是动态元素吗?“页面”(Jquery mobile,记住页面是 div ,而不是文档)是否需要刷新?关于元素的另一个事件?

任何事物?

谢谢。

4

1 回答 1

0

当我对表单中的每个元素进行迭代时, .each() 只会下降 1 级。给定一个 JQuery Mobile 表单...

<form>
    <div class="ui-field-contain">
         <label></label>
         <input></input>
    </div>
</form>

您必须对字段容器 div 的子元素执行 .each() 。以正常方式查询 dom 以获取任何输入元素并更改其属性也不起作用,这毫无价值。

$('#detail_form').children().each(function () { 
   var child = $(this);
   child.children().each(function () {
        var sub_item = $(this);
        sub_item.removeAttr('disabled');
   };
};
于 2013-01-05T21:47:50.170 回答