所以我正忙于注册,我希望人们选择性别。我通过使用单选按钮来完成此操作。现在,我想要的是,有一个禁用的post
按钮,直到两个框中的一个被选中,这是我用jQuery做的:
var $radio = $("input:radio");
$radio.change(function()
{
var checkedButtons = false;
$radio.each(function() {
if (this.checked)
{
var checkedButtons = true;
return false;
}
});
if (checkedButtons)
{
$("#postGender").removeAttr("disabled");
}
else
{
$("#postGender").attr("disabled", "disabled");
}
});
这个小块是代码,是我在stackoverflow上找到的。唯一不对的是它不起作用。
请参阅此内容以获取更多代码,并获得演示:JsFiddle
答案 0 :(得分:8)
您可以将所有内容减少到一行:
$("input:radio").change(function () {$("#postGender").prop("disabled", false);});
<强> jsFiddle example 强>
答案 1 :(得分:0)
删除第一个var
块中的if
。 var checkedButtons = true;
正在该块的范围内创建不同的 checkedButtons
。因此,第一个checkedButtons
将保持不变,另一个在if
块完成后消失。
应该是checkedButtons = true;
答案 2 :(得分:0)
你可以大大简化这一点。
如果您考虑一下,一旦他们点击单选按钮,他们就无法取消选择它们:他们只能点击另一个单选按钮。因此,一旦按钮改变了一次,就不再需要监视它了,你可以从那里启用按钮。
$("input:radio").change(function () {
$("#postGender").attr("disabled", false);
});
答案 3 :(得分:0)
这样的事情应该做:
var $radio = $("input:radio");
$radio.change(function () {
if ($radio.filter(':checked').length > 0) {
$("#postGender").removeAttr("disabled");
} else {
$("#postGender").attr("disabled", "disabled");
}
});
http://jsfiddle.net/n6sta3dp/8/
一些旁注: