如何回滚jquery按钮组

时间:2014-02-20 14:01:47

标签: jquery html ajax

我有一个带有更改事件的按钮组。在更改时,事件调用ajax帖子来保存值。如果出现错误,我希望将按钮组设置回初始状态。

所以我将初始状态保持为页面加载变量(intital)。 如果ajax调用失败,在“错误”函数中,我使用'initial'来检查相应的按钮。

问题是图形按钮组没有恢复到初始值。 更糟糕的是,当我对两个按钮发出警报时,我看到已检查的attr已正确设置,但未在屏幕上反映出来。

帮助表示感谢,因为我搜索了很多关于此的内容: - (

JS代码:

//keep initial buttonset checked value
var intial = $( '#radio :checked');

//on buttonset change, do a ajax post, and in case of failure, set original value back
$( "#radio" ).buttonset().change(function(){
    $.post("/to/somewhere",{showList:'show', id:123})
        .error(function(){
            if (intial.val() == "show"){
                $('#visibleYes').attr("checked", true);
            } 
            else {
                $('#visibleNo').attr("checked", true);
            }
        })                
    })
});

html代码

<div id="radio">
   <input class="yesNoRadio" type="radio" id="visibleYes" name="visible" value="show" checked="checked"/><label for="visibleYes">Show</label>
   <input class="yesNoRadio" type="radio" id="visibleNo"  name="visible" value="hide" /><label for="visibleNo">Hide</label>
</div>

1 个答案:

答案 0 :(得分:1)

更新增强元素的checked属性后,您应该refresh按钮小部件:

$(intial.val() == "show" ? "#visibleYes" : "#visibleNo")
    .prop("checked", true).button("refresh");

请注意,我使用的是prop()而不是attr(),建议使用类似checked的布尔属性。