我的表单中有一个奇怪的行为,它会从文本框中发送数据,但它不会发送按钮数据。
这是我的表格:
<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。
答案 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的答案一无所知,但你给了我一个提示。您如何表示表单已提交两次,因此删除它在函数中提交表单的行为我工作。