如何在用户尝试提交指定表单时更改表单参数

时间:2016-03-18 09:35:09

标签: javascript jquery forms

当用户尝试提交指定的表单时,有没有办法更改表单参数?

假设我有以下形式:

<form id="myform" method="port" action="/form.php">
  <input type="file" name="image1">
  <input type="submit">
</form>

因此,当用户点击提交按钮时,它会向包含/form.php参数的image1发出POST请求。我想以编程方式将此参数更改为完全不同的base64编码图像。

有可能吗?

2 个答案:

答案 0 :(得分:1)

您可以在jQuery的$('form').submit()事件中编辑值,如本答案中所述: https://stackoverflow.com/a/1547963/5742681

您可以使用您想要的任何内容替换表单值,方法是创建一个新的数据对象并POST而不是原始的表单值。

如果由于某种原因你不想使用jQuery的。post(),你也可以更改$('form').submit()中的输入值并返回true,标准的提交事件将在jQuery之后发生。

答案 1 :(得分:0)

将ID添加到文件输入和隐藏的输入字段,以便html看起来像:

<form id="myform" method="post" action="/form.php">
  <input id="changeme" type="file" name="image1">
  <input id="hidden" type="hidden" name="base64img" value="">
  <input type="submit">
</form>

在jQuery中,您可以对表单提交采取一些操作,如:

var frm = $('#myform');
frm.submit(function (ev) {
   frm.find('input#hidden').attr('value', 'data:image/png;base64,alotoftext');
   frm.find('input#changeme').remove();
});

修改

如果您无权访问服务器,请使用jQuery添加elemt,如:

$('<input>').attr({
    type: 'hidden',
    id: 'hidden',
    name: 'base64img',
    value: ''
}).appendTo('#myform');