2012-12-26 97 views
5

如何获取已在引导被按下按钮的“状态”?Twitter的引导:获取的引导复选框按钮状态

I.e.我使用这个代码,这使得按钮“切换”就像一个复选框:

<div class="btn-group" data-toggle="buttons-checkbox"> 
    <button type="button" class="btn btn-primary">Left</button> 
    <button type="button" class="btn btn-primary">Middle</button> 
    <button type="button" class="btn btn-primary">Right</button> 
</div> 

这是从the bootstrap manual here.

但我然后单击提交按钮 - 没有包含在$ _ POST数据。我如何知道哪个按钮被选中?

我曾尝试加入'value="1" name="1"'等藏汉的按钮 - 但仍然一无所获。

编辑:这里是完整的解决方案,我可以在下面的Felix的帮助下创建。被“选中”

<form method="post" action="" id="mform" class="form-horizontal"> 
<div class="btn-group" data-toggle="buttons-checkbox"> 
    <button type="button" name="left" value="1" class="btn btn-primary">Left</button> 
    <button type="button" name="middle" value="1" class="btn btn-primary">Middle</button> 
    <button type="button" name="right" value="1" class="btn btn-primary">Right</button> 
</div> 
<button type="submit" class="btn">Submit</button> 
</form> 

<script> 
    $('#mform').submit(function() { 
     $('#mform .btn.active').each(function() { 
      var input = document.createElement("input"); 
      input.setAttribute("type", "hidden"); 
      input.setAttribute("name", this.name); 
      input.setAttribute("value", this.value); 
      document.getElementById("mform").appendChild(input); 
     }); 
    }); 
</script> 

回答

15

按钮将附属于他们的active类。然后你可以使用jQuery来只选择那些按钮。由于button是表单元素,因此它们可以具有namevalue属性,最好使用这些属性。

例子:

var data = {}; 

$('#myButtonGroup .btn.active').each(function() { 
    data[this.name] = this.value; 
}); 

将数据发送到服务器,你可以使用Ajax和手动设置数据/与其他形式的数据合并(如果存在)。

您也可以尝试到价值也反映到上,如果你想用“传统”的形式提交(见Change form values after submit button pressed)提交隐藏的表单元素。

-1

可以使用bootstap开关状态的方法来获得当前状态为好。

var data = {}; 

$('#myButtonGroup .btn.active').each(function(index,element) { 
    data[this.name] = jQuery(element).bootstrapSwitch('state') 
}); 
+0

Purvesh,我不相信OP说使用BootstrapSwitch库的任何事情 - 它是完全独立的,而不是Bootstrap的本地部分... – MandM