2012-07-20 19 views
1

使用:grails 1.3.7 fyi。如何獲取gsp頁面中選定單選按鈕的id值給grails控制器/域類

<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

錯誤來自您的hiddenField。它試圖獲得nameMod的id屬性。我想你可能需要'value = $ {name.id}'。 – Weezle 2012-07-20 20:12:07

回答

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> 

Command對象:

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]) 
     } 
    } 
} 
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> 
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> 

這會給你每名無線電設備組,並允許您訪問這些控制器獨立。

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 
} 
0

最簡單的方法: 只是聲明瞭一個字符串名稱selectedAction在你的領域類(必須與GSP單選按鈕的名稱相匹配)。就這樣,GORM將負責綁定過程;所選單選按鈕的值將被放入selectedAction(域類字段)。

你只需要做什麼。呼!

相關問題