首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JQuery移动-禁用后启用表单元素

JQuery移动-禁用后启用表单元素
EN

Stack Overflow用户
提问于 2013-01-05 21:31:55
回答 1查看 2.2K关注 0票数 0

在我的Jquery表单中,表单基于Json对象动态创建元素。它动态地向窗体添加一个Edit按钮。生成窗体时,我将所有元素设置为“禁用”。

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

当用户单击“编辑”按钮时,应启用所有表单元素。禁用工作很好,但我不能让他们启用。

代码语言:javascript
运行
复制
  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中),重新启用表单元素的代码就在这个事件处理程序中。所有表单元素都是输入。(基本文本输入)

代码语言:javascript
运行
复制
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文档,它似乎比以前更好,但它仍然需要更好的照顾。

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

通过向元素添加标准的禁用属性,可以在标记中禁用所有jQuery移动小部件,就像使用本机控件一样。每个表单小部件还有标准的禁用和启用方法,这些方法在每个表单小部件中都有文档。下面是几个禁用小部件的示例

如果您转到Jquery文档中的文本输入页面,并在页面中搜索“启用”或“禁用”,什么都找不到。此外,它们被解释为“方法”,不存在这样的方法。所有谷歌都让我尝试..。

Child.removeAttr(“禁用”);//无骰子child.attr(“禁用”);//无骰子

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

什么都行?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-01-05 21:47:50

在对表单中的每个元素进行迭代时,.each()只下降了1级。给出一个JQuery移动表单..。

代码语言:javascript
运行
复制
<form>
    <div class="ui-field-contain">
         <label></label>
         <input></input>
    </div>
</form>

您必须对字段容器div的子元素执行.each()。用正常的方式查询dom中的任何输入元素并更改它们的属性也是没有价值的。

代码语言:javascript
运行
复制
$('#detail_form').children().each(function () { 
   var child = $(this);
   child.children().each(function () {
        var sub_item = $(this);
        sub_item.removeAttr('disabled');
   };
};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14176605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档