Sco*_*ott 16 html forms radio-button twitter-bootstrap
我的twitter bootstrap javascript单选按钮出了问题.当我选择一个,然后单击提交按钮时,它不会显示所选的无线电值.
我的代码:
<form action="" class="form-horizontal" method="post">
<fieldset>
<div class="control-group">
<label class="control-label">Type:</label>
<div class="controls">
<div class="btn-group" data-toggle="buttons-radio">
<button type="button" data-toggle="button" name="option" value="1" class="btn btn-primary">Option One</button>
<button type="button" data-toggle="button" name="option" value="2" class="btn btn-primary">Option Two</button>
</div>
</div>
</div>
<div class="form-actions">
<input class="btn btn-primary" type="submit" value="Go">
<a href="index.php" class="btn">Back</a>
</div>
</fieldset>
</form>
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,是有name="option" value="1"和name="option" value="2",但是当我选择一个电台,我做的:
<?php print_r($_POST); ?>
没有option指定帖子.
它仅适用于twitter单选按钮,因为当我添加时<input type="text" name="test" value="something"/>它会出现在$_POST变量中.
问题出在哪儿?
Ben*_*owe 25
问题是<button>点击时不提交任何内容.您需要有一个隐藏的输入字段,并在单击按钮时触发输入中的值更改
<input type="hidden" name="option" value="" id="btn-input" />
<div class="btn-group" data-toggle="buttons-radio">
<button id="btn-one" type="button" data-toggle="button" name="option" value="1" class="btn btn-primary">Option One</button>
<button id="btn-two" type="button" data-toggle="button" name="option" value="2" class="btn btn-primary">Option Two</button>
</div>
<script>
var btns = ['btn-one', 'btn-two'];
var input = document.getElementById('btn-input');
for(var i = 0; i < btns.length; i++) {
document.getElementById(btns[i]).addEventListener('click', function() {
input.value = this.value;
});
}
</script>
Run Code Online (Sandbox Code Playgroud)
在引导程序的情况下,'radio'仅影响按钮状态和行为.它不会影响表单行为.
小智 17
这是上面一件作品的替代品.
$("body").find(".btn").each(function(){
$(this).bind('click', function(){
$("input[name=view-opt-bt-group-value]").value = this.value
});
});
Run Code Online (Sandbox Code Playgroud)
这个HTML是:
<div class="row pull-right">
<div class="btn-group view-opt-btn-group" data-toggle="buttons-radio">
<button type="button" class="btn" value="0"><i class="icon-th-list"></i></button>
<button type="button" class="btn" value="1"><i class="icon-th-list"></i></button>
<input type="hidden" name="view-opt-bt-group-value" value="0">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
你可以将btn类添加到<label>s,所以我实现了以下不需要隐藏输入,如果没有bootstrap或javascript你会仍然使用html帮助程序优雅地降级.
试一试.
<div class="btn-group" data-toggle="buttons-radio">
<label class="btn">@Html.RadioButton("option", 1) Option 1</label>
<label class="btn">@Html.RadioButton("option", 2) Option 2</label>
</div>
...
<script type="text/javascript">
$(function () {
// Bootstrappable btn-group with checkables inside
// - hide inputs and set bootstrap class
$('.btn-group label.btn input[type=radio]')
.hide()
.filter(':checked').parent('.btn').addClass('active');
});
</script>
Run Code Online (Sandbox Code Playgroud)
更新:他们现在在Bootstrap 3中使用这种格式,但它需要稍微不同的标记(即data-toggle="buttons").请参见http://getbootstrap.com/javascript/#buttons