2011-10-13 50 views
4

我想在一些复杂的检查后手动提交表单。因为检查涉及用户交互,所以整个检查过程不是同步完成的。下面是这种情况:如何添加一个post参数到手动表单提交?

  1. 用户点击一个按钮(一个HTML <button id='button-id'>标签)
  2. 我阻止按钮的默认操作(这是表单提交)
  3. 我做一个复杂的检查。
  4. 在检查过程中的某个地方,我显示一个对话框并等待用户回复(这里,原始检查函数继续并返回)
  5. 我为该对话框提供回调函数,当用户触发并运行时关闭它(正面或负面的结果)
  6. 现在,我应该提交表格,但原始HTML <button id='button-id'>应张贴为successful control。换句话说,我应该将按钮标签的name作为发布参数之一添加到服务器。

我使用jQuery的$('#form-id').submit()方法。我如何将<button>元素的name添加到HTTP Post参数中?

+1

而不是直接调用'$('#形式 - id')。submit()',你可以设置一个标志,验证是否结束并调用'$('#button-id')。click()'然后触发'$('#form-id ').submit()'而不是验证。不知道这是否有效,但你可以试试看。 –

+0

是@FelixKling,那是我们的第一个解决方案。感谢您的建议。但这只是一个破解。我们想知道我们是否可以添加某些内容来发布参数。这似乎是直截了当的解决方案。 :) –

+0

你也可以在表单中插入一个隐藏字段,名字与'

回答

4

你可以在提交前追加一个隐藏字段表单 -

$('<input>').attr({ 
    type: 'hidden', 
    id: 'buttonid', 
    name: 'buttonid', 
    value: yourbuttonidvar 
}).appendTo('#form-id'); 
+0

这只是另一个黑客。但它是一个很好的。 +1。 –

+0

@ ipr101,这不是这个问题的答案。但这是一个很好的解决方案;) –

0

而不是使用一个按键式的,为什么不使用

<input type="submit" name="commit" id="button_id" ...> 
+0

你没有明白我的意思。控制本身并不重要。重要的是我取消了原来的行为。但最后,我想把它作为HTTP Post中的一个成功控件。 –

+0

也许不是,但 - 控件的“控件名称”由其名称属性给出。我认为你想解决的问题是用一个按钮,名称没有提交,输入提交,它是 – chrispanda

相关问题