表格不发送按钮数据

时间:2014-10-19 11:56:41

标签: javascript php html forms

我的表单中有一个奇怪的行为,它会从文本框中发送数据,但它不会发送按钮数据。

这是我的表格:

<form name="login_registro" method="POST" id="login_registro">
    <input type="text" id="username" name="username" value="">
    <input type="text" id="password" name="password">

    <input type="submit" name="hacer_login" style="width:auto; height:auto; padding:5px;" class="button" onclick="submitForm('{{matches|last}}/entrar')" value="entrar">

    <input type="submit" name="registro" style="width:auto; height:auto; padding:5px;" class="button" onclick="submitForm('{{matches|last}}/registro')"  value="regístrate gratis!" >
</form>

提交功能:

<script type="text/javascript">
    function submitForm(action) {
    document.getElementById('login_registro').action = action;
    document.getElementById('login_registro').submit();
}
</script>

在两页(entrar和registro)中我做了一个print_R($ _ POST);它只显示两个输入,用户名和密码。它没有显示按下的按钮。

如果我删除onclick功能,并添加一个动作=&#34; page.php&#34;它发送两个输入加上按下的按钮。

我知道我可以做一个解决方法,但我想知道为什么会发生这种情况。感谢。

PS:我评论了所有的jquery。

2 个答案:

答案 0 :(得分:1)

您的问题是,使用onclick并提交表单会提交两次,因为提交按钮已经发送了表单,并且您添加了form.submit()

使用onsubmit="return submitForm('actionName')"。如果您在函数末尾返回true,则表单将被提交。如果您返回false,则提交将被取消。

您可以通过不动态设置动作并将其作为表单或参数(通过submitForm函数设置)的字段发送来更优雅地执行此操作,但这意味着更改服务器端代码。

答案 1 :(得分:0)

function submitForm(action) {
    document.getElementById('login_registro').action = action;
}

我对@Vicentiu Bacioiu的答案一无所知,但你给了我一个提示。您如何表示表单已提交两次,因此删除它在函数中提交表单的行为我工作。