无法使用Javascript提交表单
我正在尝试使用javascript和ajax提交名为“vform”的表单 名为“show”的按钮用于显示包含名为vform的表单的“div”,该表单调用codevalidate函数,并在那里使用一些ajax代码提交表单。我得到的错误是vform.submit()。这是html和js代码(我知道错误处于if状态,但不知道在哪里) html:无法使用Javascript提交表单,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我正在尝试使用javascript和ajax提交名为“vform”的表单 名为“show”的按钮用于显示包含名为vform的表单的“div”,该表单调用codevalidate函数,并在那里使用一些ajax代码提交表单。我得到的错误是vform.submit()。这是html和js代码(我知道错误处于if状态,但不知道在哪里) html: <button id="show" onClick="javascript:codefield(); return false";>Apply f
<button id="show" onClick="javascript:codefield(); return false";>Apply for Discount</button>
<div id="apply" style="display:none">Voucher code<br>
<form id="vform" name="vform" action="" method="post" onsubmit="javascript:codevalidate(); return false;" >
<input type="text" name="code" id="code"><br>
<span id="error" style="color:red"></span><br>
<input type="submit" name="btn" value="apply" id="btn" ></form>
</div>
function codevalidate()
{
if(document.getElementById('code').value!=="")
{
$.post("couponajax.php",{code:$("#code").val()},
function(data)
{
if(data=='1')
{
//alert("success");
vform.submit();
return true;
}
else
{
document.getElementById('error').innerHTML="You have entered a wrong code!";
return false;
}
});
}
else
{
document.getElementById('error').innerHTML="Code can't be empty!";
return false;
}
return false;
}
codefield函数只是显示onclick事件上的div,ajax调用只是检查数据库中是否存在代码。if exists返回1,否则返回0。
问题是显示警报消息,但未提交表单。如何解决此问题?您应该使用:
document.getElementById("vform").submit();
更新:
尝试从onsubmit属性中删除“return false;”,并从if条件中删除“vform.submit();”。您没有选择表单 尝试改变
vform.submit();
致:
请试试这个,对我有用
document.getElementById("vform").submit();
我认为您缺少jquery选择器 试着替换 vform.submit(); 或者您可以调用submit按钮单击事件,如
$("#btn").click();
试试这个
document.forms["vform"].submit();
希望这有帮助。您不必提交带有代码的表单 只需调用验证函数并使用preventDefault函数控制提交流
var codevalidate = function(e) {
if (!validationCode) { // if validation code didn't pass
e.preventDefault(); // prevent form from submitting
}
}
// register callback that will be called when user submits form
document.getElementById("vform").addEventListener('onsubmit', codevalidate);
这样,只有通过验证,用户才能提交表单
还可以通过调用console.log(data)检查您的data
是否实际返回“1”代码>
如果操作为空,表单将提交到当前地址,可以吗?问题是:
表单
元素的操作
属性为空。因此,它被提交到调用.submit()
方法的同一页面
因此,您应该首先指定action
属性,如:
<form id="vform" name="vform" action="vfrom_submit.php" method="post"
onsubmit="javascript:codevalidate(); return false;" >
.....
</form>
致:
希望有帮助,干杯:) 它应该是document.getElementById(“vform”).submit()
我已经尝试过了,但是它还没有工作。(如果我在if条件之外使用vform.submit(),那么它就工作了。)你能记录或警报请求返回的数据吗?是的警报消息(成功)正在工作。表单的动作属性为空。为什么呢?这可能是一个原因。顺便说一句,您在哪个浏览器上测试代码?对我来说,vform.submit也在工作,但不在if条件下。我使用了if(isset($_POST['btn']){echo“form submitted”}..感谢您的时间:)我在同一页上使用了POST值..所以是的,没问题。是的,数据实际上返回1。问题是form.submit();如果我在if条件之外使用代码,则代码可以正常工作..我不知道为什么..(顺便说一句,非常感谢:))
var codevalidate = function(e) {
if (!validationCode) { // if validation code didn't pass
e.preventDefault(); // prevent form from submitting
}
}
// register callback that will be called when user submits form
document.getElementById("vform").addEventListener('onsubmit', codevalidate);
<form id="vform" name="vform" action="vfrom_submit.php" method="post"
onsubmit="javascript:codevalidate(); return false;" >
.....
</form>
vform.submit();
$("#vform").submit();
//OR
// document.getElementById("vform").submit();
// Although vform.submit() can also work.