1

我想将 buttonset() jQuery 方法应用于 radioButtons。所以我写道:

<div id="divSomething">
    <input type="radio" id="radio1" name="HasSomething" value="Yes" ><label for="radio1">Yes</label>
    <input type="radio" id="radio2" name="HasSomething" value="No"><label for="radio2">No</label>
    <input type="radio" id="radio3" name="HasSomething" value="Dont mind" checked="checked"><label for="radio3">Don't mind</label>
</div>

<script type="text/javascript">
    $("#divSomething").buttonset();

    $("#divSomething input").change(function () {
        alert(this.value);
    });
</script>

...这完全有效!

但这是一个 ASP.NET MVC3 项目,我想使用 Razor 语法来生成我的单选按钮。所以我写道:

<div id="divSomething">
    @Html.RadioButtonFor(m => m.HasSomething, "Yes", new { @type="radio", @id="radio1"})
    @Html.RadioButtonFor(m => m.HasSomething, "no", new { @type = "radio", @id = "radio2" })
    @Html.RadioButtonFor(m => m.HasSomething, "Dont know", new { @type = "radio", @id = "radio3", @checked = "checked" })
</div>

<script type="text/javascript">
    $("#divSomething input").buttonset();

    $("#divSomething").change(function () {
        alert(this.value);
    });
</script>

...并且按钮显示为“普通”单选按钮,而不是“按钮集样式”。如果我只是写 $("#divSomething").buttonset(); 单选按钮甚至不显示...

最糟糕的是,radioButtons 生成的 HTML 对于这两种方法都是相同的,除了 radioButtons 参数(id、值等)的顺序,但我认为这并不重要。

有什么东西这么明显我看不到吗?

谢谢您的帮助。

4

2 回答 2

0

好的,所以这是解决方案:我必须将标签添加到生成的 RadioButtons

@Html.RadioButtonFor(m => m.HasSomething, "Yes", new { @id="radio1"})
<label for="radio1">Yes</label>
@Html.RadioButtonFor(m => m.HasSomething, "No", new { @id = "radio2" })
<label for="radio2">No</label>
@Html.RadioButtonFor(m => m.HasSomething, "Dont know", new { @id = "radio3", @checked = "checked" })
<label for="radio3">Don't know</label> 
于 2013-08-05T22:06:30.647 回答
0

在您的脚本中,第一个有 #divSomething,第二个有 #divSomething 输入。

于 2013-08-02T11:05:08.740 回答