【问题标题】:JQuery And CheckboxesJQuery 和复选框
【发布时间】:2013-03-06 12:53:19
【问题描述】:

我在使用 Jquery 和复选框时遇到问题。 例如,我有这个:

<input type="checkbox" name="guest" value="1" />
<input type="checkbox" name="guest" value="2" />
<input type="checkbox" name="guest" value="3" />

<input type="text" id="player-1" />
<input type="text" id="player-2" />
<input type="text" id="player-3" />

我的问题以及我一直在寻找的问题是如何使用 JQuery 禁用输入[type=text]。

这是我的代码:

<script>
$("input").on("click", function() {
var i = $("input:checked").val();
if(this.checked)
$("#player-"+i).attr("disabled", "disabled");
else
$("#player-"+i).removeAttr("disabled");
});
</script>

可能有什么错误我没有得到,但是当我点击一个复选框时,它会禁用第一个文本,如果我取消选中它,在我选中另一个之前什么都不会发生。

感谢您的宝贵时间!!!

【问题讨论】:

    标签: jquery input checkbox


    【解决方案1】:

    你需要

     var i = $(this).val();
    

    代替

    var i = $("input:checked").val();
    

    Live Demo

    $("input").on("click", function () {
        var i = $(this).val();
        if (this.checked) $("#player-" + i).attr("disabled", "disabled");
        else $("#player-" + i).removeAttr("disabled");
    });
    

    【讨论】:

    • 谢谢!正如您评论的那样,我使用了 var i 并且有效。我还应用了用户未定义的部分代码,并且工作了。
    【解决方案2】:

    您可以使用jQuery prop 方法启用/禁用您的输入:

    $("input").prop('disabled', true);
    $("input").prop('disabled', false);
    

    你的例子:

    $("#player-" + i).prop('disabled', this.checked);
    

    【讨论】:

    • 谢谢,下次我用prop()的那个函数!
    【解决方案3】:

    问题出在这一行的$("input:checked").val()

    把这个改成,

    $("input").on("click", function () {
        var i = $(this).val();
        if (this.checked) 
            $("#player-" + i).attr("disabled", "disabled");
        else 
            $("#player-" + i).removeAttr("disabled");
    });
    

    因为它只有在被选中时才会有价值。当您取消选中该复选框时,它将显示 undefined

    【讨论】:

    • 是的,当我取消选中它时,它给了我未定义的信息。谢谢大家,现在它正在工作=)
    猜你喜欢
    • 2011-08-03
    • 1970-01-01
    • 1970-01-01
    • 2011-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多