【发布时间】:2014-01-18 04:07:54
【问题描述】:
我有一个HTML form:
<form name="myForm" method="post" id="myForm" action="ACTION_URL_HERE">
<input type="hidden" name="txt1" id="txt1">
<input type="hidden" name="txt2" id="txt2">
<input type="hidden" name="txt3" id="txt3">
<input type="submit" name="submit" value="Submit">
</form>
<input type="button" value="Submit form" onclick="MyFunction();">
我在以下函数中填写表单中 3 个隐藏字段中的值后提交表单。
function MyFunction()
{
var isValid="";
$.post('ServletURL',{action: "getData"}).done(function(data)
{
$.each(data, function(index, text)
{
if(index==0)
isValid=text;
if(isValid=="OK")
{
if(index==1)
$("#txt1").val(text);
if(index==2)
$("#txt2").val(text);
if(index==3)
{
$("#txt3").val(text);
alert("Before form submit...");
document.getElementById('myForm').submit();
alert("Form is submited.");
}
}
});
});
}
MyFunction() 工作正常,只是它没有提交表单。我可以看到警报alert("Before form submit...");,但看不到第二个警报alert("Form is submited.");。
然后我从表单中删除了以下不必要的submit 按钮:
<input type="submit" name="submit" value="Submit">
然后代码工作正常,表单正在提交。
我的问题是,当表单中有submit 元素时,为什么没有提交表单?
【问题讨论】:
-
@Barmar
$.post调用是在隐藏字段中填充值,myForm有不同的action。 (请参阅 html 表单中的ACTION_URL_HERE)。 -
你为什么没有提到你在 Javascript 控制台中遇到了那个错误?如果你没有检查控制台,为什么不呢?当 JS 没有按预期工作时,这应该是你的第一步,发布到 SO 是最后的手段。
-
@Barmar 感谢您的建议。我会确保在发布问题之前检查控制台。
标签: javascript jquery html