获取未禁用的输入值

时间:2012-11-07 10:46:47

标签: javascript jquery html

我有几个输入文本元素

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

我还有按钮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()  );
                }
            });
        });
});

6 个答案:

答案 0 :(得分:4)

无需遍历每个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/

答案 1 :(得分:1)

条件是:

!$(this).find('input').attr('disabled')

答案 2 :(得分:1)

这是另一个尝试:

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

        });

    });

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

希望有所帮助!

答案 3 :(得分: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()  );          
});

答案 4 :(得分: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

答案 5 :(得分:0)

只需检查已禁用的属性值,方法与分配它的方式相同,如下所示:

if (!$(this).find("input").prop("disabled")) {
     // do something to this
}