0

我有几个输入文本元素,

我有disable some input禁用某些输入元素的按钮,

我还有 button see values,用于查看所有输入值,

我需要什么:例如我点击按钮disable some input,现在一些输入被禁用了对吗?

现在如果单击按钮see values,我只想看到未禁用的输入值。

我几乎全部制作,但我不知道如何制作这种条件:if element already is disabled

请看演示 http://jsfiddle.net/WW8UF/4/

身体是:

<form>
      <ul id="my_ul">
             <li><input type="text" value="a" /></li>
             <li><input type="text"  value="s" /></li>
             <li><input type="text" value="d" /></li>
       </ul>
</form>

<div id="disable_btn">disable some input</div>
<div id="see_values">see values</div>

js,使用 jQuery 1.8.2

$(document).ready( function () {  

        $("#disable_btn").on("click", function () {
            $("#my_ul li:eq(0) input").prop("disabled", true);
        });


        $("#see_values").on("click", function () {
            $("#my_ul li").each ( function () {
                if (1==1/*if this input is not disabled*/) {
                    alert ( $(this).find("input").val()  );
                }
            });
        });
});

​</p>

4

6 回答 6

5

无需遍历 every li,只需获取未禁用的输入:

$("#my_ul li input:not([disabled])").each ( function () { ... });

现场示例:http: //jsfiddle.net/WW8UF/10/

你也可以使用

$("#my_ul li input:enabled").each ( function () { ... });

这有点清洁。现场示例:http: //jsfiddle.net/WW8UF/11/

于 2012-11-07T10:53:31.030 回答
1

条件是:

!$(this).find('input').attr('disabled')
于 2012-11-07T10:49:39.527 回答
1

这是另一个尝试:

$("#see_values").on("cick", function () {
        $("#my_ul li input").not(":disabled").each ( function ()
                alert ( $(this).val());

        });

    });

JQuery 提供了伪选择器“:disabled”,所以你可以忽略它们。

希望有帮助!

于 2012-11-07T10:54:17.630 回答
0

使用更好的选择器。

改变:-

$("#my_ul li").each ( function () {
  if (1==1/*if this input is not disabled*/) {
    alert ( $(this).find("input").val()  );
  }          
});

到:-

// Perform search with selector
$("#my_ul li input:enabled").each ( function () {
  // No if statement required
  alert ( $(this).find("input").val()  );          
});
于 2012-11-07T10:51:44.990 回答
0

另一种可能:

$(document).ready( function () {  

        $("#disable_btn").on("click", function () {
            $("#my_ul li:eq(0) input").prop("disabled", true);
        });


        $("#see_values").on("click", function () {
            $("#my_ul li input").each ( function () {
                if (!$(this).is(':disabled')) { //or if ($(this).is(':enabled'))
                    alert ( $(this).val()  );
                }

            });

        });

});

工作jsfiddle

于 2012-11-07T10:51:53.583 回答
0

只需检查您的disabled属性值,就像您分配它一样,如下所示:

if (!$(this).find("input").prop("disabled")) {
     // do something to this
}
于 2012-11-07T10:52:15.637 回答