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

在JavaScript中更改输入和提交表单的值,javascript,html,forms,onclick,submit,Javascript,Html,Forms,Onclick,Submit,我现在正在做一个基本的表格。当您点击submit按钮时,它应该首先更改字段的值,然后像往常一样提交表单。这一切看起来有点像这样: <form name="myform" id="myform" action="action.php"> <input type="hidden" name="myinput" value="0" /> <

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

<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>
这将不起作用,因为您的表单标记没有id

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

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

您试图基于
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;
}

函数DoSubmit(){
document.getElementById(“myinput”).value='1';
返回true;
}

您可以这样做:

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

我还担心在提交按钮上使用onclick事件;事件的顺序并不明显,如果用户通过在文本框中单击return等方式提交,则不会调用您的回调。

否。当您的输入类型为submit时,您应该在标记中声明一个
onsubmit
事件,然后进行所需的更改。也就是说,在表单标签中定义一个
onsubmit


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

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

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

我的问题是分配为
document.getElementById(“myinput”).Value='1'


注意资本V的价值?一旦我把它改为小写,即value,数据就开始发布。奇怪的是,它也没有给出任何JavaScript错误。

您可以使用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>

这可能会对您有所帮助

你的HTML

你的剧本

函数save(){
$('#myinput').val('1');
$('表格').submit();
}

为什么不在html中将我的输入值更改为1?当然我可以这样做,但如果这是我想要的,我就不会问了it@Paparappa这种反应扼杀了它!哦,它有一个ID,我很抱歉我的编码有点快。编辑了上一篇文章。不,您可以使用表单的
名称
属性来访问表单及其子元素,就像这样。+1指出,提交表单时,除了按按钮本身以外,不会触发onclick事件。为什么会出现错误?你正在创造一个新的财产“价值”,这很好。我想说的是我把“价值”称为“价值”。它当然会给出一个未定义的错误,因为这个属性“Value”没有初始化好,它会:1)如果您正在设置它,它不会给出错误;2)如果您正在使用它,它会静默地返回未定义的,这不是错误。您是对的..我应该再澄清一点。。我分配了一个“值”属性并发布了一个表单。服务器中收到的帖子正在寻找“值”,因此从未找到我正在设置的值
function DoSubmit(){
  document.myform.myinput.value = '1';
  return true;
}
var myform = document.getElementById('myform');
myform.onsubmit = function(){
    document.getElementById('myInput').value = '1';
    myform.submit();
};
<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>