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

IT技术 javascript html forms onclick submit
2021-03-03 15:10: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();
}
6个回答

你可以这样做:

<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 事件持谨慎态度;事件的顺序不是很明显,如果用户提交,例如,在文本框中点击返回,则不会调用您的回调。

+1 指出在通过按下按钮本身以外的其他方式提交时不会触发 onclick 事件。
2021-04-25 15:10:33
不,您可以使用name像这样属性访问表单及其子元素
2021-05-12 15:10:33
document.getElementById("myform").submit();

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

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

<form name="myform" id="myform" action="action.php">
哦,它有一个 ID,对不起,我的编码速度有点快。编辑了之前的帖子。
2021-04-22 15:10:33

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

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

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

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

您试图根据name用于回发到服务器属性来访问元素,但 JavaScript 会响应该id属性。添加一个id与相同的值name,一切都应该正常工作。

<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;
}