使用:grails 1.3.7 fyi。
<g:each var="name" in="${nameList}">
<li>${name.first}</li>
<input id="Add" type="radio" name="nameMod" value="${name.first}"/>Add
<input id="Modify" type="radio" name="nameMod" value="${name.first}"/>Modify
<g:hiddenField name="action" value="${nameMod.id} "/>
</g:each>
所以这就是我要做的事情:我知道如何获得单选按钮的值,但是,我还需要知道按下了哪个按钮。从上面可以看到,我尝试将单选按钮的ID设置为操作(添加/修改),但是我收到一条错误,指出.id
不是有效属性。我知道如何在jQuery中测试选择或不选择单选按钮,但我不确定如何将jQuery中的值传递给控制器或域类。
还有另一种方法吗?基本上我需要知道动作和名称,以便我可以更新数据库。
感谢您的任何建议! (我可以这么说吗?编辑!!;))
答案 0 :(得分:2)
将一些类(仅在javaScript中使用)添加到单选按钮,然后使用它!
<g:each var="name" in="${nameList}">
<li>${name.first}</li>
<input id="Add" type="radio" name="nameMod" class="f_radioButtonGroup" value="${name.first}"/>Add
<input id="Modify" type="radio" name="nameMod" class="f_radioButtonGroup" value="${name.first}"/>Modify
<g:hiddenField name="action" value="${nameMod.id} "/>
</g:each>
和javaScript函数
function getCheckedItemNumber() {
var result;
var radioButtons = $(".f_radioButtonGroup");
for (var i = 0; i < radioButtons.length; i++) {
if (radioButtons[i].checked) {
result = radioButtons[i].value;
}
}
return result
}
答案 1 :(得分:1)
也许是这样的:
<g:each var="name" in="${nameList}">
<li>${name.first}</li>
<input id="Add" type="radio" name="selectedAction" value="add"/>Add
<input id="Modify" type="radio" name="selectedAction" value="modify"/>Modify
<g:hiddenField name="nameMod" value="${name.first} "/>
</g:each>
答案 2 :(得分:1)
您可能需要使用单选按钮名称进行更多操作,因为您正在迭代未知数量的名称。你可以在名为nameMod
的组中拥有100个单选按钮 - 然后你只能选择这100个单选按钮中的一个 - 我认为这不是你想要的。
当我有这样的事情时,我就这样做了:
<g:each var="name" in="${nameList}">
<li>${name.first}</li>
<input type="radio" name="nameMod_${name.id}" value="add"/>Add
<input type="radio" name="nameMod_${name.id}" value="modify"/>Modify
<g:hiddenField name="name_${name.id}" value="${name.first} "/>
</g:each>
这将为每个名称提供一个无线电组,并允许您单独在控制器中访问它们。
答案 3 :(得分:1)
你可以用jQuery做到这一点,但这对于使用命令对象来说是个好例子:
查看:
<g:each var="name" in="${nameList}" status="i">
<li>${name.first}</li>
<input type="radio" name="nameAction[${i}]" value="add"/>Add
<input type="radio" name="nameAction[${i}]" value="modify"/>Modify
<g:hiddenField name="name[${i}]" value="${name.first} "/>
</g:each>
命令对象:
class NameCommand {
List<String> nameAction = []
List<String> name = []
}
控制器:
def theAction = { NameCommand foo ->
foo.nameAction.eachWithIndex { val, index ->
if (val == "add") {
whateverService.add(foo.name[index])
}
else {
whateverService.modify(foo.name[index])
}
}
}
答案 4 :(得分:0)
简单的方法:
只需在您的域类中声明名称为 selectedAction
的字符串(必须与gsp中单选按钮的名称匹配)。就是这样,GORM将负责绑定过程;所选单选按钮的值将放入selectedAction
(域类字段)。
你只需要做那些事情。呼!