Javascript jQuery属性(“已禁用”)不起作用
我知道这个问题已经被问过很多次了,也回答过很多次了,但是没有一个解决方案对这个例子有效,尽管我知道它们应该有效。也许其他双眼睛将有助于解决这个问题 我已经在设置disabled属性的代码之前和之后放置了警报,该属性确实设置正确,但元素仍然处于禁用状态 我摘录了复制此问题所需的代码: 这里有一些代码只是为了满足SO规则Javascript jQuery属性(“已禁用”)不起作用,javascript,jquery,html,jquery-mobile,Javascript,Jquery,Html,Jquery Mobile,我知道这个问题已经被问过很多次了,也回答过很多次了,但是没有一个解决方案对这个例子有效,尽管我知道它们应该有效。也许其他双眼睛将有助于解决这个问题 我已经在设置disabled属性的代码之前和之后放置了警报,该属性确实设置正确,但元素仍然处于禁用状态 我摘录了复制此问题所需的代码: 这里有一些代码只是为了满足SO规则 $(function () { var dbVendor = $("#database-vendor"); $("#uses-db").on("change", f
$(function () {
var dbVendor = $("#database-vendor");
$("#uses-db").on("change", function (event) {
event.preventDefault();
dbVendor.prop("disabled", ($(this).val() == "Yes" ? false : true));
});
});
数据库供应商已经被jquerymobile包装成一个div和一堆JavaScript。更改select的disabled属性不会导致jQuery Mobile响应并更改其div
删除jQuery Mobile将使代码正常工作
如果您想让它与jQuery Mobile配合使用,那么您需要查看jQuery Mobile API,以了解如何启用其伪选择元素。与其与propdisabled混为一谈,不如这样做
$dbVendor.selectmenu("enable");
文件
您正在使用jquerymobile,它向元素及其父元素添加禁用ui的类
$(function () {
$("#uses-db").on("change", function (event) {
event.preventDefault();
if($(this).val() == "Yes"){
$("#database-vendor").parent().removeClass("ui-disabled");
$("#database-vendor").removeClass("ui-disabled");
$("#database-vendor").removeAttr("disabled");//edited
}
else{
$("#database-vendor").parent().addClass("ui-disabled");
$("#database-vendor").addClass("ui-disabled")
$("#database-vendor").addAttr("disabled");//edited
}
});
});
实际工作代码请查看此解决方案
$(function () {
var dbVendor = $("#database-vendor");
$("#uses-db").on("change", function (event) {
event.preventDefault();
dbVendor.selectmenu($(this).val() === 'Yes' ? 'enable' : 'disable');
});
});
Javascript是传递该变量所需的函数范围而不是块范围in@Space ???????? 该变量不在事件处理程序函数的外部作用域中吗?很抱歉,没有看到fiddler attachedStackoverflow具有snippets功能。现在根本不需要使用外部站点来托管实时演示。不相关,但可能只是dbVendor.propdisabled,$this.val!=是的:嗯,当我检查小提琴输出时,我得到了这个:。。。因此divs中隐藏了一个select:FYI,变量是dbVendor而不是$dbVendor+1但是,这个答案是唯一正确使用jQuery移动API的答案。对不起,我在我的jsFiddle.dbVendor.selectmenu$this.val==Yes中将dbVendor更改为$dbVendor?启用:禁用是较短的版本。我在您之前看到了@andalm解决方案,因此您的努力得到了+1。谢谢。虽然这是可行的,但它正在侵入selectmenu插件。最好只执行$database-vendor.selectmenuenable或disable。感谢您的努力,但请尝试打开小提琴上的选择列表。刚刚添加了$database-vendor.removeAttrIsabled;非常感谢,我为此挣扎了几个小时。
dbVendor.selectmenu(($(this).val() == "Yes" ? "enable" : "disable"))