原型:Form.serialize缺少一些输入(由于表?)

时间:2010-03-08 21:16:22

标签: ajax forms html-table prototypejs

我正在使用JavaScript Prototype(通过Ruby on Rails)来处理一些Ajax调用;但在一个特殊情况下,我错过了表格中的一个字段。

我有这样的布局:

+---------+---------+
| 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值,但不包含单选按钮的选择。

这是因为我的表格中有一张桌子吗?我怎么能绕过这个?

1 个答案:

答案 0 :(得分:0)

发现问题,从上面的粘贴代码中看不出来。在构建AJAX请求之前,onclick处理程序正在禁用许多表单对象,包括单选按钮和按钮本身。如果我将这些步骤移到AJAX onLading参数,则会全部发送。