【问题标题】:Is the a common way to disable/enable jQuery Mobile inputs?禁用/启用 jQuery Mobile 输入的常用方法是什么?
【发布时间】:2014-04-04 11:56:28
【问题描述】:

我有一个编辑表单,其中包含 jQuery Mobile 输入,例如文本输入、滑块、复选框和按钮。 当表单首次显示时,将获取要编辑的内容(模型)。

在开始获取之前,我禁用所有表单元素以防止用户在获取内容(模型)时执行任何操作。只有取消按钮应该起作用。 “已禁用”表示灰显且我无法点击。

表单加载完成后,我再次启用表单元素。

目前,我只能通过自己选择每种输入类型来做到这一点。

//These inputs work with .prop("disable", "true")
//#save is an <button type="submit">
var normalInputs = $("input[type='text'], #save");
//JQM converts <input type="range"> to this
var sliders = $("input[data-type='slider']");
var checkboxes = $("input[type='checkbox']");

normalInputs.prop("disabled", "true");
sliders.slider("disable").slider("refresh");
checkboxes.checkboxradio("disable").checkboxradio("refresh");

为了启用,我什至必须调用 slider() 和 checkboxradio() 初始化方法,否则会出错 (cannot call methods of xxx prior to initialization. attempted to call method enable)

是否有一种方法可以通过仅使用一个选择器来正确禁用所有 jQuery Mobile 输入?禁用/启用输入的常用方法?

【问题讨论】:

  • 禁用/启用时不需要刷新。最简单的方法是将ui-state-disabled 类添加到输入parent div。 jsfiddle.net/Palestinian/ZzZ6N
  • 谢谢,完美运行。如果这是一个答案,我会接受。
  • 我将添加一个带有解释的答案。我很高兴它对你有用。

标签: javascript jquery jquery-mobile web-applications


【解决方案1】:

您可以使用ui-state-disabled禁用任何元素。这个类被 jQM 添加到具有disabled="disabled" 属性的 disabled 中。

可以添加到form

$("#form").addClass("ui-state-disabled");

按元素,即input,应将其添加到父div,因为input在创建时被包裹在div中。

$("input").closest("div").addClass("ui-state-disabled");

Demo

【讨论】:

  • 我最终使用了.parent("div") instread of .closest("div"),因为前者禁用了我的整个表单。但在那之后效果很好。
  • @ManuelHoffmann 使用.parent() 似乎更安全,感谢提醒:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-27
  • 2013-05-22
  • 1970-01-01
  • 2013-05-24
  • 2011-08-07
  • 2014-04-17
相关资源
最近更新 更多