jquery动态选择单选按钮(表单重置问题)

时间:2013-08-13 14:43:46

标签: javascript jquery dynamic radio-button

我试图使用

动态选择单选按钮
$('#dashboard2 #dbMainPanel #bar2 #ddShowBar').attr('checked', true);

但是这个会导致form.reset()失败。因为我在页面中有很多按钮,所以当我选择

时我不使用表格标签
$('#dashboard1 #dbMainPanel #bar1 #ddShowBar').attr('checked', true); 

所有其他单选按钮都会重置。

如何避免这种情况?并将页面中现有的单选按钮保持为选中状态,然后动态更改当前单选按钮。

  1. 首先点击pie
  2. 中的div1
  3. 然后点击bar
  4. 中的div2

    在这种情况下,我希望pie中的div1bar中的div2被选中

    Fiddle

    Fiddle2

2 个答案:

答案 0 :(得分:3)

您是否尝试过使用.prop()

$('#ddShowBar').prop('checked', true);

http://api.jquery.com/prop/

  

属性与属性

  在特定情况下,属性和属性之间的差异可能很重要。在jQuery 1.6之前,.attr()方法在检索某些属性时有时会考虑属性值,这可能会导致行为不一致。 从jQuery 1.6开始,.prop()方法提供了一种显式检索属性值的方法,而.attr()则检索属性。   例如,应检索selectedIndex,tagName,nodeName,nodeType,ownerDocument,defaultChecked和defaultSelected,并使用.prop()方法进行设置。在jQuery 1.6之前,这些属性可以使用.attr()方法检索,但这不在attr的范围内。它们没有相应的属性,只是属性。

还有更多: in your example 您正在为您的广播组生成多个ID元素并复制attr:名称
每个新组的无线电都需要与前一组不同的name。使用coulter c变量轻松实现:

在此示例中,第一组中的无线电将具有名称:txtradio0;比下一组无线电:txtradio1等...

要维护其他行无线电,您只需更改组NAME属性:

<强> DEMO

var r = ['Pie','Bar','Line','Area','Scatter'];
var c = 0;  // a group counter // set to 1 if you want

function populateWithRadio(){

    var rB = "<div class='radiobuttons'>";
    for(var i=0; i< r.length; i++){         // create radios
        rB += "<input type='radio' class='ddShow"+ r[i] +"' name='txtradio"+ c +"' value='"+r[i]+"'/>"+ r[i] ;
    }
    rB += "</div></br></br>";

    c++;                         // increase Group counter 
    return rB;                   // returns the generated HTML to append
}


$('#div1').append( populateWithRadio() );
$('#div2').append( populateWithRadio() );

$(document).on("click", '.radiobuttons input', function () {
    alert( 'CLASS: '+ this.className +'\n NAME: '+ this.name );
});

答案 1 :(得分:1)

AFAIK,无线电按“名称”HTML属性分组。所以你应该为每个无线电组设置唯一的名称,然后只能同时选择一个组中的无线电。 否则(如果无线电不在逻辑上分组),最好使用复选框。