首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过单击单选按钮的标签,以编程方式取消其选择

通过单击单选按钮的标签,以编程方式取消其选择
EN

Stack Overflow用户
提问于 2011-10-18 01:20:26
回答 2查看 1.9K关注 0票数 1

我正在寻找一个脚本,允许我取消选择一个单选按钮。我在上面找到了一个然后在这里实现了..。

http://jsfiddle.net/sparky672/YFsVK/1/

正如你所看到的,它工作的很好,但只有当你点击单选按钮本身。(您也可以通过单击相应的<label>文本来“选择”按钮。默认情况下,这就是<label>的操作方式。)

但是,我也需要能够“取消选择”一个单选按钮,只需点击相应的<label>,这就是我需要帮助的地方。

(为什么?因为我使用的插件图形化地改变了单选按钮的外观,使用的是包含在<label>中的图像精灵,它覆盖了默认的单选按钮。在我的jsFiddle中有一行你可以激活来查看插件的工作。)

我确信我只需要稍微修改一下这个脚本,但我似乎无法正确地理解它。我相信我只需要“选择”<label>,同时操作相应的单选按钮。<label>通过将按钮的id放置在相应的<label>for属性中而“附加”到按钮上。

JavaScript:

代码语言:javascript
复制
$(document).ready(function() {

    $('input[name="amount"]').mousedown(function(e) { // allows radio button deselection
        var $self = $(this);
        if ($self.is(':checked')) {
            var uncheck = function() {
                setTimeout(function() {
                    $self.removeAttr('checked');
                }, 0);
            };
            var unbind = function() {
                $self.unbind('mouseup', up);
            };
            var up = function() {
                uncheck();
                unbind();
            };
            $self.bind('mouseup', up);
            $self.one('mouseout', unbind);
        }
    });

});

HTML:

代码语言:javascript
复制
<fieldset id="radioset">
    <input type="radio" id="radio-1" name="amount" value="Option 1" /><label for="radio-1" title="">Option 1</label><br />
    <input type="radio" id="radio-2" name="amount" value="Option 2" /><label for="radio-2" title="">Option 2</label><br />
    <input type="radio" id="radio-3" name="amount" value="Option 3" /><label for="radio-3" title="">Option 3</label><br />
    <input type="radio" id="radio-4" name="amount" value="Option 4" /><label for="radio-4" title="">Option 4</label><br />
    <input type="radio" id="radio-5" name="amount" value="Option 5" /><label for="radio-5" title="">Option 5</label>
</fieldset>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-18 01:58:33

我也尝试了@Jrod所做的事情,并注意到插件不起作用。所以我修改了插件。基本上将其添加到标签中:

代码语言:javascript
复制
.bind('mouseup', function(){
    if ($(this).is('.checked') && input.is(':radio')) {
        setTimeout(function(){
            label.removeClass('checked focus');
            input.removeAttr('checked').blur();
        }, 0);
    }
});

这是一个更新演示

票数 2
EN

Stack Overflow用户

发布于 2011-10-18 01:44:15

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
    $(document).ready(function() {

        $(".radio-label").click(function(e) {

            var radio = $(this).attr("for");
            radio = $("#" +radio );
            if(radio.is(":checked")) {
                e.preventDefault();
                radio.removeAttr("checked");
            }

        });

    });
</script>
</head>
<body>
<fieldset id="radioset">
    <input type="radio" id="radio-1" name="amount" value="Option 1" /><label class="radio-label" for="radio-1" title="">Option 1</label><br />
    <input type="radio" id="radio-2" name="amount" value="Option 2" /><label class="radio-label" for="radio-2" title="">Option 2</label><br />
    <input type="radio" id="radio-3" name="amount" value="Option 3" /><label class="radio-label" for="radio-3" title="">Option 3</label><br />
    <input type="radio" id="radio-4" name="amount" value="Option 4" /><label class="radio-label" for="radio-4" title="">Option 4</label><br />
    <input type="radio" id="radio-5" name="amount" value="Option 5" /><label class="radio-label" for="radio-5" title="">Option 5</label>
</fieldset>
</body>
</html>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7801448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档