JavaScript不提交表单

JavaScript Not Submitting Form

本文关键字:表单 提交 JavaScript      更新时间:2023-09-26

我花了一个小时左右的时间在这里和谷歌上搜索,但没有成功。我有一个表单,我想通过POST提交。javascript运行和验证良好,它甚至"提交"表单。但是当它这样做时,它只是重新加载页面。没有发送POST头(使用Firefox中的Firebug确认)。这就好像它只是重新加载页面而不是提交它。

这个表单嵌入在addUser.php页面中。

<form action="addUser.php" method="post" name="NewUser">
<div data-role="field-contain">
    <label label-for="EmpID" class="ui-hidden-accessible">Enter Employee ID</label>
    <input name="EmpID" id="EmpID" placeholder="Employee ID" value="" autocomplete="off" title="Enter Employee ID" type="number" required autofocus>
    <label label-for="UserName" class="ui-hidden-accessible">Enter username</label>
    <input name="UserName" id="UserName" placeholder="Username" value="" autocomplete="off" title="Enter the new username" required>
    <p>
        <label label-for="NewPass1" class="ui-hidden-accessible">Enter Your Current Password</label>
        <input name="NewPass1" id="NewPass1" placeholder="New Password" value="" type="password" autocomplete="off" title="Must be at least 8 characters, with numbers and upper and lower case letters." required>
    </p>
    <p>
        <label label-for="NewPass2" class="ui-hidden-accessible">Enter Your Current Password</label>
        <input name="NewPass2" id="NewPass2" placeholder="Verify Password" value="" type="password" autocomplete="off" title="Re-enter your chosen new password." required>
    </p>
</div>
<button type="button" name="submitButton" value="submitButton" data-theme="d" data-inline="true" data-icon="check" data-iconpos="left" onclick="validateForm ()">
    Add User
</button>

这里是Javascript:

function validateForm()
{
    var reason = "";
    reason += validateEmpID();
    reason += validateUserName();
    reason += validateNewPassword();
    if (reason != "") {
        alert("There are some errors with the data you entered:'n" + reason);
        return false;
    } else {
        document.NewUser.submit();
    }
}

我尝试了各种不同的方法来调用submit,结果都是一样的。非常感谢任何帮助。

谢谢加雷思

我觉得应该是

document.forms['NewUser'].submit();

document.forms.NewUser.submit();

我认为你在某个地方错过了添加返回false,这是浏览器要求重新加载表单的原因。更好的提交方式是使用提交按钮而不是简单的按钮。

为什么不使用AJAX post?或者更好的是一个jQuery AJAX POST?

$.post(url, data, datatype);
http://api.jquery.com/jQuery.post/

function validateForm(event) {
    var reason = "";
    reason += validateEmpID();
    reason += validateUserName();
    reason += validateNewPassword();
    if (reason != "") {
        alert("There are some errors with the data you entered:'n" + reason);
        event.preventDefault();
    }
}
document.getElementById('my_form').addEventListener('submit', validateForm, false);