在我的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小部件 对于元素的标准禁用属性,就像你一样 原生控制。每个表单小部件还具有标准禁用和启用 每个表单小部件记录的方法。这里有几个 禁用小部件的示例
如果您转到Jquery Mobile文档中的link is the form elements page并在页面中搜索“启用”或“禁用”,则找不到任何内容。此外,它们被解释为“方法”,并且不存在该名称的这种方法。所有谷歌搜索让我尝试...
child.removeAttr( '禁用'); // 没有骰子 child.attr( '禁用', ''); //没有骰子
我缺少什么,因为这些是动态元素?是否需要刷新“页面”(Jquery mobile,记住页面是div,而不是文档)吗?关于元素的另一个事件?
什么?
感谢。
答案 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');
};
};