JQuery Mobile - 禁用后启用表单元素

时间:2013-01-05 21:31:55

标签: jquery jquery-mobile

在我的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移动文档中的此{​​{3}},如果您在此页面中搜索“禁用表单元素”,您会看到一段他们告诉您的段落:
  

通过添加,可以在标记中禁用所有jQuery Mobile小部件   对于元素的标准禁用属性,就像你一样   原生控制。每个表单小部件还具有标准禁用和启用   每个表单小部件记录的方法。这里有几个   禁用小部件的示例

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

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

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

什么?

感谢。

1 个答案:

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