在 JavaScript 中更改输入和提交表单的值

Posted

技术标签:

【中文标题】在 JavaScript 中更改输入和提交表单的值【英文标题】:Change value of input and submit form in JavaScript 【发布时间】:2011-10-18 05:43:33 【问题描述】:

我目前正在制作一个基本表格。当您点击提交按钮时,它应该首先更改字段的值,然后像往常一样提交表单。看起来有点像这样:

<form name="myform" id="myform" action="action.php">
    <input type="hidden" name="myinput" value="0" />
    <input type="text" name="message" value="" />
    <input type="submit" name="submit" onclick="DoSubmit()" />
</form>

这就是我对 javascript 代码的了解。它将“myinput”的值更改为 1,但不提交表单。

function DoSubmit()
  document.myform.myinput.value = '1';
  document.getElementById("myform").submit();

【问题讨论】:

为什么不在 html 中将 myinput 值改为 1? 我当然可以,但如果这是我想要的,我就不会问了 @Paparappa 这个反应杀了它! 【参考方案1】:

你可以这样做:

<form name="myform" action="action.php" onsubmit="DoSubmit();">
    <input type="hidden" name="myinput" value="0" />
    <input type="text" name="message" value="" />
    <input type="submit" name="submit" />
</form>

然后修改你的DoSubmit函数只返回true,表示“没关系,现在可以提交表单了”给浏览器:

function DoSubmit()
  document.myform.myinput.value = '1';
  return true;

我也会警惕在提交按钮上使用 onclick 事件;事件的顺序不是很明显,如果用户通过例如在文本框中点击返回来提交,您的回调将不会被调用。

【讨论】:

不,您可以像这样使用name 属性访问表单及其子元素。 +1 指出当通过按下按钮本身以外的其他方式提交时不会触发 onclick 事件。【参考方案2】:
document.getElementById("myform").submit();

这不起作用,因为您的表单标签没有 id。

像这样改变它,它应该可以工作:

<form name="myform" id="myform" action="action.php">

【讨论】:

哦,它有一个 ID,对不起,我的编码有点快。编辑了之前的帖子。【参考方案3】:

这是简单的代码。您必须为您的输入设置一个 id。这里称它为“myInput”:

var myform = document.getElementById('myform');
myform.onsubmit = function()
    document.getElementById('myInput').value = '1';
    myform.submit();
;

【讨论】:

【参考方案4】:

没有。当您的输入类型是提交时,您应该在标记中声明一个onsubmit 事件,然后进行您想要的更改。意思是,在你的表单标签中定义一个onsubmit

否则将输入类型更改为按钮,然后为该按钮定义onclick 事件。

【讨论】:

【参考方案5】:

您正在尝试访问基于name 属性的元素,该属性适用于回发到服务器,但JavaScript 响应id 属性。添加一个与name 具有相同值的id,一切都应该正常工作。

<form name="myform" id="myform" action="action.php">
  <input type="hidden" name="myinput" id="myinput" value="0" />
  <input type="text" name="message" id="message" value="" />
  <input type="submit" name="submit" id="submit" onclick="DoSubmit()" />
</form>

function DoSubmit()
  document.getElementById("myinput").value = '1';
  return true;

【讨论】:

【参考方案6】:

我的问题原来是我分配为document.getElementById("myinput").Value = '1';

注意到 Value 中的大写 V 了吗?一旦我将其更改为小写,即 value,数据就会开始发布。奇怪的是它也没有给出任何 JavaScript 错误。

【讨论】:

为什么会报错?您正在创建一个新属性“Value”,这非常好。 我想说的是我将“价值”称为“价值”。它当然会给出一个未定义的错误,因为这个属性“Value”没有被初始化 好吧,它会:1)如果你正在设置它,不会出错,2)如果你正在使用它,那么默默地返回undefined,这不是错误。 你是对的..我应该再澄清一点..我正在分配一个“价值”属性并发布一个表格。服务器中收到的 POST 正在寻找“值”,因此从未找到我设置的值【参考方案7】:

您可以使用 onchange 事件:

<form name="myform" id="myform" action="action.php">
    <input type="hidden" name="myinput" value="0" onchange="this.form.submit()"/>
    <input type="text" name="message" value="" />
    <input type="submit" name="submit" onclick="DoSubmit()" />
</form>

【讨论】:

【参考方案8】:

这可能会对你有所帮助。

您的 HTML

<form id="myform" action="action.php">
<input type="hidden" name="myinput" value="0" />
<input type="text" name="message" value="" />
<input type="submit" name="submit" onclick="save()" />
</form>

你的脚本

    <script>
        function save()
            $('#myinput').val('1');
            $('#form').submit();
        
    </script>

【讨论】:

以上是关于在 JavaScript 中更改输入和提交表单的值的主要内容,如果未能解决你的问题,请参考以下文章

表单输入的值在 React 中提交时未更新

表单提交时更改的值(下拉表单)

使用 Javascript 或 jquery 更改公式中两个输入字段的值

如何在 JavaScript 中更改复选框的标签?

从外部提交 Handsontable 中的更改

如何在单击输入按钮时提交表单以及执行 javascript 函数?