Jquery无线电:已检查未按预期工作

时间:2014-06-30 13:20:15

标签: javascript jquery

我正在学习jquery。我在jquery中创建了一个带有次要验证的简单html文件,但它们的行为不正常。问题是:

如果先输入名称,然后选中复选框,则一切似乎都正常。

但是,如果我先选择性别然后输入名称,它会一直提醒我选择性别。 代码的实现方式是否存在问题?

<script src="jquery.js"></script>
<script>
    $(document).ready(function () {
        $("#Name").focus();
        $("#target").submit(function () {
            var fn = $("#Name").val();
            if (fn == "" && fn.length == 0) {
                alert('Name is mandatory');
                $("#Name").focus();
                return false;
            }
            var status = false;
            $("#gender").each(function () {
                if ($(this).is(":radio:checked")) {
                    status = true;
                }
            });
            if (!status) {
                alert("Select Gender");
                $("#gender").focus();
                return false;
            }
            return true;
        });
    });
</script>
<form id='target' action='MyResult.html'>
    First Name:
    <input type='text' name='Name' id='Name' />
    <br/>Gender:
    <input type='radio' name='gender' id='gender' value='male' />Male
    <input type='radio' name='gender' id='gender' value='female' />Female
    <br/>
    <input type='submit' value='Registration' />
</form>

1 个答案:

答案 0 :(得分:1)

ID必须是唯一的。您可以将Attribute value selector:checked结合使用,以过滤掉是否选中单选按钮。

var status = $(":radio[name=gender]:checked").length > 0;

代替

var status = false;
$("#gender").each(function () {
    if ($(this).is(":radio:checked")) {
        status = true;
    }
});

DEMO

相关问题