首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >禁用按钮,直到单击一个单选按钮。

禁用按钮,直到单击一个单选按钮。
EN

Stack Overflow用户
提问于 2014-12-20 07:00:09
回答 3查看 10.1K关注 0票数 3

所以我正忙着登记,我想让人们选择他们的性别。我用单选按钮来做这件事。现在,我想要的是有一个禁用的post按钮,直到两个框中的一个被选中为止,这是我对jQuery所做的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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");
}

});

这是一段代码,是我在堆栈溢出上找到的。唯一的错误就是它不起作用。

有关更多代码和演示:JsFiddle,请参见以下内容

EN

回答 3

Stack Overflow用户

发布于 2014-12-20 07:04:21

删除第一个var块中的ifvar checkedButtons = true;正在该块的范围内创建一个不同的checkedButtons。因此,第一个checkedButtons将保持不变,而另一个将在if块完成后消失。

应该是checkedButtons = true;

票数 1
EN

Stack Overflow用户

发布于 2014-12-20 07:08:16

你可以大大简化这件事。

如果你想一想,一旦他们点击一个单选按钮,他们就不能真正取消它:他们只能点击另一个单选按钮。因此,一旦按钮改变了一次,就没有必要再监视它了,您可以从那里启用按钮。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$("input:radio").change(function () {
    $("#postGender").attr("disabled", false);
});

演示

票数 1
EN

Stack Overflow用户

发布于 2014-12-20 07:13:18

像这样的事情应该可以做到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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/

几个旁白:

  • 一旦选中了单选按钮,用户就永远不会取消检查(除非他开始使用js控制台)。我认为删除你职能中的“其他”部分是安全的。
  • 不要忘记,也可以使用enter键提交表单,因此仅禁用按钮是不够的。您可能也应该聆听表单的提交事件,并检查用户在让提交失败之前是否做出了选择。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27581407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文