我正在尝试使用javascript和ajax.Here提交名为'vform'的表单 名为'show'的按钮用于显示包含名为vform的表单的'div',该表单调用codevalidate函数,并使用一些ajax代码提交表单。我得到的错误是vform.submit()。这是html和js代码(我知道错误是在条件但不知道在哪里)
HTML:
<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>
的javascript:
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 else 0。 问题是正在显示警报消息但未提交表单。我该如何解决这个问题?
答案 0 :(得分:1)
我认为你缺少jquery选择器。
尝试替换
vform.submit();
带
$("#vform").submit();
或者您可以调用提交按钮点击事件,如
$("#btn").click();
答案 1 :(得分:0)
您没有选择表格。
尝试更改;
vform.submit();
要:
$("#vform").submit();
答案 2 :(得分:0)
请尝试这个,对我有用。
document.getElementById("vform").submit();
答案 3 :(得分:0)
试试这个
document.forms["vform"].submit();
希望这有帮助。
答案 4 :(得分:0)
您不必提交包含代码的表单。
只需调用验证功能并使用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);
只有在验证通过时,用户才会提交表单。
同时检查您的data
是否实际返回&#39; 1&#39;致电console.log(data);
如果操作为空,表单将提交到当前地址,是吗?
答案 5 :(得分:0)
事情是:
您的action
元素的 form
属性为空。所以它被提交但是被调用.submit()
方法的同一页面。
因此您首先应指定action
属性,如:
<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.
希望它有所帮助,欢呼:)!
答案 6 :(得分:-1)
您应该使用:
document.getElementById("vform").submit();
更新
尝试删除“return false;”从onsubmit属性中删除“vform.submit();”来自if条件。