jQuery prop(“disabled”)无效

时间:2015-03-13 19:39:49

标签: javascript jquery html jquery-mobile

我知道这个问题已被多次询问和回答,但是这个解决方案都没有适用于这个例子,即使我知道他们应该这样做。也许其他一双眼睛将有助于解决这个问题。

我在设置disabled属性的代码之前和之后放置了警报,这确实设置正确,但元素仍保持禁用状态。

我摘录了重现此问题所需的代码:jsfiddle

这里有一些代码只是为了满足SO规则。

$(function () {
    var dbVendor = $("#database-vendor");
    $("#uses-db").on("change", function (event) {
        event.preventDefault();
        dbVendor.prop("disabled", ($(this).val() == "Yes" ? false : true));
    });
});

5 个答案:

答案 0 :(得分:3)

不要乱用道具("禁用"),而不是

$dbVendor.selectmenu("enable");

http://jsfiddle.net/r3977gy7/30/

文档

http://api.jquerymobile.com/selectmenu/#method-enable

答案 1 :(得分:0)

请参阅此解决方案

$(function () {
   var dbVendor = $("#database-vendor");
   $("#uses-db").on("change", function (event) {
        event.preventDefault();
        dbVendor.selectmenu($(this).val() === 'Yes' ? 'enable' : 'disable');
    });
});

答案 2 :(得分:0)

dbVendor.selectmenu(($(this).val() == "Yes" ? "enable" : "disable"))

答案 3 :(得分:-1)

你正在使用jquery mobile wich添加" ui-disabled"元素及其父元素的类

$(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
      }
   });
});

实际上正在使用代码jsffidle

答案 4 :(得分:-2)

#database-vendor由jQuery Mobile包含了一个div和一堆JavaScript。更改select的disabled属性并不会导致jQuery Mobile响应并更改其div。

删除jQuery Mobile将使代码正常工作。

如果您希望它与jQuery Mobile一起使用,那么您需要查看jQuery Mobile API以了解如何启用其伪选择元素。