2015-06-13 181 views
1

瘋狂難倒了。我的頁面上有附加的下拉表單。在更改事件時,我提交此表單並在我的Spring Controller中捕獲值。問題是捕獲的值總是以1.我在這裏錯過了什麼?下拉選擇的值默認爲第一個選項

<form name="queuePositionForm" id="queuePositionForm" action="/updatePosition" method="post"> 
    <select name="selPosition" onChange="updatePosition()"> 
     <option value=""></option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5">5</option> 
    </select> 
</form> 

updatePosition

function updatePosition(){ 
    $('form#queuePositionForm').submit(); 
} 

控制器方法

@RequestMapping(value = "/updatePosition", method = RequestMethod.POST) 
public String updateCarQueuePosition(@RequestParam(value = "selPosition", required = false) String position) throws IOException { 
    //do something with position here. 
    return "redirect:/confirmation"; 
} 
+0

我有這個,它打印的值精細var sel = $('#selPosition:selected')。text(); \t alert('sel'+ sel); – user1195192

+0

你如何捕獲控制器中的值?我知道這是在請求參數。但你在做什麼呢。你可以分享該代碼嗎? –

+0

@Amit.rk3我想我發現了這個問題。使用for循環在我的頁面上動態創建多個下拉表單。它始終捕獲頁面上第一個表單的值。現在的問題是,我該如何爲我的網頁上的所有表單做這項工作? this.form.submit()不會幫助我我認爲 – user1195192

回答

0

由於您JSP有多種形式具有相同idname,如果你改變它,並有可能會更好獨特的ID分配給它們中的每一個都通過爲id分配一個計數器後綴。同時爲每個select元素指定id,如下所示。這裏i將會產生這些形式的counter for循環。

<form name="queuePositionForm" id="queuePositionForm_${i}" action="/updatePosition" method="post"> 
    <select name="selPosition" id="selPosition_${i}" onChange="updatePosition(${i})"> 
     <option value=""></option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     <option value="4">4</option> 
     <option value="5">5</option> 
    </select> 
</form> 

有了這個,你可以讓你的updatePosition函數如下,它將提交正確的封閉表單。

function updatePosition(formIndex){ 
    $('form#queuePositionForm_'+formIndex).submit(); 
} 
+0

這個東西是拋出:TypeError:$(...)。attr(...)是不確定的 – user1195192

+0

@ user1195192更新的答案,只是通過索引功能本身 –

+0

剛剛嘗試。它仍然在控制器中給1。我瘋了在這裏大聲笑 – user1195192

相關問題