无法使用Javascript提交表单

时间:2014-08-18 10:33:52

标签: javascript jquery html ajax

我正在尝试使用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。 问题是正在显示警报消息但未提交表单。我该如何解决这个问题?

7 个答案:

答案 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条件。