【发布时间】:2015-10-16 15:45:36
【问题描述】:
我正在使用带有 2 个单选按钮的 jquery-ui 按钮集,用于输入是/否。
var yesInput = document.createElement("input");
yesInput.type = "radio";
$(yesInput).attr('id', "njs1");
$(yesInput).prop('checked', this._data);
var noInput = document.createElement("input");
noInput.type = "radio";
$(noInput).attr('id', "njs2");
$(noInput).prop('checked', !this._data);
我在这些按钮和处理函数中调用更改事件,试图检测是否单击了选中的按钮。 buttonSet 是被制成buttonset() 的div。
$("input[type=radio]", buttonSet).change(checkHandler);
var data= $("input[type=radio]", buttonSet).eq(0).is(':checked');
在这种情况下,我预计如果单击第二个按钮,数据应该返回 false。我的理解是当我检查收音机时,它的 html 被修改为添加checked。
但是,无论调用什么,数据始终是true。
我做错了什么?如何得到正确的值?
编辑:
如您所见,我可以单击“否”并仍然选中“是”。因为它是一台收音机,我希望它会表现得那样
【问题讨论】:
-
你能提供一个jsfiddle.net上的代码示例吗?
-
jsbin.com/wuhozayevo/edit?html,js,output 我不确定为什么按钮集没有按应有的方式呈现,但这不是问题,因为它很可能是 jsbin 特有的。如您所见,我可以单击“否”并仍然选中“是”。既然它是一台收音机,我希望它会表现得那样。
-
几个问题:1) 单选输入元素应该有一个具有相同值的
name属性,以便它们被链接,以确保只能选择yes或no。 2) 我看到 vanilla js 和 jQuery 代码的混合使用; vanillajs 在您的代码中的目的是什么? 3) 不确定$(buttonSet).buttonset();做了什么。这是一些jquery插件吗? 4) 您在示例中同时加载 jquery 1.x 和 2.x。 -
谢谢。我删除了对旧 jquery 库的引用。我使用 vanilla js 只是因为,我有一个函数可以传递容器 div,该容器 div 将按钮集作为参数。这就是为什么我想让它尽可能分开。官方 jquery-ui 文档建议使用
$(buttonSet).buttonset();并在示例中显示相同。 api.jqueryui.com/buttonset/#method-option -
@chimurai 更改后,它看起来应该如此。但是,同时检查两者的相同问题(即使添加了
name属性)仍然存在。
标签: javascript jquery jquery-ui jquery-ui-button