Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery UI单选按钮-如何正确切换选中状态_Jquery_Jquery Ui_Radio Button - Fatal编程技术网

jQuery UI单选按钮-如何正确切换选中状态

jQuery UI单选按钮-如何正确切换选中状态,jquery,jquery-ui,radio-button,Jquery,Jquery Ui,Radio Button,我有一组单选按钮,都是用jQueryUI的.button()设计的 我想更改它们的选中状态。但是,当我以编程方式对容器的更改事件执行此操作时: $("#myradio [value=1]").attr("checked", false); $("#myradio [value=2]").attr("checked", true); 值已正确更改,但UI样式仍显示带有选中样式的未选中单选按钮,且选中样式仍看起来未选中 我查看了jQuery UI文档中单选按钮的button()方法,但是没有任何关

我有一组单选按钮,都是用jQueryUI的
.button()
设计的

我想更改它们的选中状态。但是,当我以编程方式对容器的更改事件执行此操作时:

$("#myradio [value=1]").attr("checked", false);
$("#myradio [value=2]").attr("checked", true);
值已正确更改,但UI样式仍显示带有选中样式的未选中单选按钮,且选中样式仍看起来未选中

我查看了jQuery UI文档中单选按钮的
button()
方法,但是没有任何关于如何更改状态和更新UI样式的内容

问题的核心是调用
$(“选择器”)。按钮(“禁用”)代码不会更改按钮的活动状态-基础单选按钮已正确选中,但UI活动状态不会更改。因此,我得到一个灰显按钮,看起来它仍然处于选中状态,而真正选中的按钮显示为未选中状态

解决方案

$("selector").button("enable").button("refresh");
查看,您需要切换激活的
ui状态
类,但最简单的方法可能只是
$('someradiobutton').trigger('click')
(或者如果您不想运行自定义事件处理程序,
$('someradiobutton').trigger('click.button')
).

更改基础状态后,需要调用该方法:

刷新按钮的视觉状态。用于以编程方式更改本机元素的选中或禁用状态后更新按钮状态

工作示例:


这对收音机使用ID,但只要您得到一个包含相关
输入[type=radio]
元素的jQuery实例,这并不重要。

尽管有相反的帖子,您可以通过ID引用单选按钮。不确定为什么jQuery UI在选中时不会自动刷新按钮,但您可以这样做:

$('selector').attr('checked','checked').button("refresh");
工作示例:

<div id = "buttons">
 <label for="b1">button1</label>
 <label for="b2">button2</label>
 <label for="b3">button3</label>

 <input type="radio" name = "groupa" id = "b1" value="b1">
 <input type="radio" name = "groupa" id = "b2" value="b2">
 <input type="radio" name = "groupa" id = "b3" value="b3">
</div>

<script>
  $('#buttons input').button();     
  $('#b3').prop('checked', true).button("refresh");
</script>

按钮1
按钮2
按钮3
$('#按钮输入')。按钮();
$('#b3').prop('checked',true.)。按钮(“刷新”);

将重置所有单选按钮,但您可以使用选择器获得更具体的信息

$( 'input:radio' )
     .removeAttr('checked')
     .removeAttr('selected')
     .button("refresh");

我通过使用setTimeout完全重置Buttonset解决了这个问题

将单击事件添加到需要确认的单选按钮。
请注意以下代码中单击的“radioButton”和完整的“radioSet”:

$('#radioButton').click(function(){
    if(confirm('Confirm Text') != true){
       resetButtonset('#radioSet', 200);
       return false;
    };
});
创建一个可重置按钮集的便捷功能:

function resetButtonset(name, time){
    setTimeout(function(){$(name).buttonset();}, time);
}

就这些

如果仍有人遇到此问题,请利用:

.prop('checked',true);
而不是:

.attr("checked", true);

工作-谢谢!我为什么要这样做?这是jQuery UI中的错误还是不良行为?@Antony:嗯,当
已选中
已禁用
属性的状态更改时,不会引发可靠的跨浏览器事件。令我惊讶的是,他们没有使用CSS让浏览器自动处理更改,但我认为他们有理由(IE6支持,也许——IE6除了链接之外,没有任何状态选择器)。另一个令人惊讶的是,它们没有提供一种方法,您可以使用它来更改
选中的
状态并同时更新UI。不过,一旦你知道了,就很容易了。:-)嘿,伙计们,当我使用“刷新”调用时,我得到了以下错误-未捕获错误:在初始化之前无法调用按钮上的方法;试图调用方法“刷新”。你们看到了吗/知道我为什么会犯这个错误吗?我也和@Blake和@Coder犯了同样的错误。事实证明我使用的是jQuery Mobile,而不是jQuery UI。我可以用
.checkboxradio(“刷新”)
而不是
。按钮(“刷新”)
来刷新它。Antony,我试过了,但按钮(“启用”)对我不起作用。不应该像$(“选择器”).attr('checked',true。)按钮(“刷新”)?我在这里唯一添加的是使用'prop'而不是'attr',从而使其成为$('selector').prop(“checked”,true)。按钮(“refresh”)。当我尝试此修复时,我得到以下错误-未捕获错误:无法在初始化之前调用按钮上的方法;试图调用方法“refresh”有人知道是什么导致了这种情况吗?-1:这将不适用于
jQuery UI按钮
s(问题是关于该按钮的),因为它们创建了未连接到原始单选按钮的单独元素。更改按钮状态后,您需要调用
按钮(“刷新”)
(最好使用
prop('checked',boolvalue)
)-1:这不适用于
jQuery UI按钮(
s)(问题是关于这些按钮),因为它们会创建未连接到原始单选按钮的单独元素。更改按钮状态后,您需要调用
按钮(“刷新”)
(最好使用
prop('checked',boolvalue)
)-1:这不适用于
jQuery UI按钮(
s)(问题是关于这些按钮),因为它们会创建未连接到原始单选按钮的单独元素。更改按钮状态后,您需要调用
按钮(“刷新”)
(最好使用
prop('checked',boolvalue)
),谢谢。即使使用按钮(“刷新”),它也不能可靠地与attr一起工作。道具看起来好多了。
.prop('checked',true);
.attr("checked", true);