0

我有一个带有选项 a、b 和其他选项的单选按钮组。如果用户选择“其他”,则允许用户在文本字段中输入他们自己的值。的HTML:

<input type="radio" name="choice" id="a" value="a"/><label for="a">a</label><div></div>
<input type="radio" name="choice" id="b" value="b"/><label for="b">b</label><div></div>
<input type="radio" name="choice" id="other" value="other"/><label for="other">other </label><input type="text" id="otherText"/<div></div>

我正在学习 jQuery,并遇到了一种行为,也许这里有人可以阐明。默认情况下,文本字段是禁用的,只有在用户单击“其他”时才启用。我有一个模糊附加到这个文本字段。我的代码:

$(document).ready(function () {
$("input#otherText").attr("disabled", "disabled");

    $("input:radio").click(function() {
        var choice = $(this).val();
        if(choice != "other") {
            $("input#otherText").attr("disabled", "disabled");
        }else {
            $("input#otherText").removeAttr("disabled");
        }
     });

    $("input#otherText").blur(function() {
        // why is this true even when I select "a" or "b"?
        console.log("Is other checked?: " + $("input#other").is(":checked"));
    });
});

我的问题与此有关:

console.log("Is other checked?: " + $("input#other").is(":checked"));

为什么即使我选择了“a”或“b”等其他单选按钮,上面的内容也总是打印为真?我问的原因是我最终想验证用户在另一个文本字段中输入的任何内容,但前提是选中了“其他”。但由于情况总是如此,即使用户在单选按钮组中选择了其他选项,我也将被迫进行评估。我想这是不可避免的,但有没有办法解决这个问题?

谢谢你。

4

1 回答 1

1

Get rid of the check for && otherError, it's not defined, and according to what you're trying to do, it doesn't need to be. Here's a demo: http://jsfiddle.net/UZZny/

Your console is going to print that it is true every-time because that textbox is only enabled when that radio is checked, the blur event fires, then your choice will change.

于 2013-06-07T02:12:00.050 回答