I got a problem with the twitter bootstrap javascript radio buttons. When I select one and then click the submit button, it doesn't show the selected radio value.
My code:
<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>
As you can see, there is a name="option" value="1"
and name="option" value="2"
but when I select one radio and I do:
<?php print_r($_POST); ?>
There is no option
post specified.
It happens only for the twitter radio buttons, because when I add <input type="text" name="test" value="something"/>
then it will appear in the $_POST
variable.
Where is the problem?
The simplest jQuery code I came up with was:
It's an exceptional use-case, for me, so it didn't need to be robust or flexible.
My answer is based on https://stackoverflow.com/a/16214643/1111662 by @mcNux
In your view (I use HAML but convert to ERB if needed)
In your view-specific javascript e.g.
pages.js.coffee
(again, I use CoffeeScript but convert to plain JS JQuery if needed)This is a jquery alternative to the above piece.
The HTML to this is:
The problem is
<button>
doesn't submit anything when clicked. You will need to have a hidden input field, and trigger a value change within the input when clicking the buttonIn the case of the bootstrap the 'radio' only affects the button state & behavior. It doesn't effect the form behaviour.
You can add the
btn
class to<label>
s, so I achieved the following which doesn't require a hidden input, degrades gracefully if no bootstrap or javascript and you can still use the html helpers.Try it out.
Update: They're using this format now in Bootstrap 3 but it requires slightly different markup (namely
data-toggle="buttons"
). See http://getbootstrap.com/javascript/#buttons