2010-03-08 16 views
0

我正在使用JavaScript Prototype(通過Ruby on Rails)來處理一些Ajax調用;但在一個特定情況下,我錯過了表單中的一個字段。原型:Form.serialize缺少一些輸入(由於表?)

我有一個這樣的佈局:

+---------+---------+ 
| Thing 1 | Thing 2 | 
+---------+---------+-----------+ 
| o Opt 1 | o Opt 1 | <Confirm> | 
| o Opt 2 | o Opt 2 |   | 
+---------+---------+-----------+ 

選項1和2是單選按鈕,確認是一個按鈕。整個表被包裹在一個形式,類似的代碼:的

<form action="javascript:void(0)"> 
    <input type="hidden" name="context" value="foo" /> 
    <input type="hidden" name="subcontext" value="bar" /> 
    <table> 
    <tr><td>Thing 1</td><td>Thing2</td></tr> 
    <tr><td> 
     <input type="radio" name="choice" value="1.1" />Opt 1<br /> 
     <input type="radio" name="choice" value="1.2" />Opt 2<br /> 
    </td><td> 
     <input type="radio" name="choice" value="2.1" />Opt 1<br /> 
     <input type="radio" name="choice" value="2.2" />Opt 2<br /> 
    </td><td> 
     <input name="choice_btn" type="button" value="Confirm" 
      onclick="new AJAX.Updater('my_form', '/process_form', 
         {asynchronous:true, evalScripts:true, 
         parameters:Form.serialize(this.form)}); 
         return false;" /> 
    </td></tr> 
    </table> 
</form> 

但我可以看到,通過點擊確認按鈕產生的POST包含了隱藏字段的foobar值,但不能選擇單選按鈕。

這是因爲我的表格裏有一張表嗎?我怎樣才能解決這個問題?

回答

0

發現問題,這從上面的粘貼代碼中不明顯。在構建AJAX請求之前,onclick處理程序將禁用許多表單對象,包括單選按鈕和按鈕本身。如果我將這些步驟移至AJAX onLading參數,它將全部發送。