我刚刚发现了一些我以前从未注意到的东西,而是处理(常规,无JS)形式。
如果通过点击Submit
按钮提交表单,则会发送Submit
按钮数据(&submit=Submit
或其他类似数据)。
但是,使用Enter键提交时,相同的表格会省略Submit
按钮数据。
示例表单:
<div id="messagebox">
<?php
echo 'txt: [' . $_REQUEST['txt'] . ']<br>';
echo 'submit_btn: [' . $_REQUEST['submit_btn'] . ']<br>';
?>
</div>
<hr>
<div id="formbox">
<form method="POST" action="?">
<input type="text" name="txt" id="txt" value=""><br>
<input type="submit" name="submit_btn" id="submit_btn" value="Submit"><br>
</form>
</div>
[它应该在提交表单时显示两个变量,但是当按下Enter键时它会忽略Submit按钮数据。]
我一直在使用submit
POST变量来进行服务器端检查。我想我将不得不添加隐藏的输入或其他东西。
无论如何,问题是:这是正常行为吗?如果是这样,为什么?
我假设Enter键只是模仿了Submit按钮。我现在猜测它没有。如果“提交”按钮是表单的一部分,但恰好没有被点击,为什么不与其余数据一起发送?
答案 0 :(得分:2)
你错过了$ _REQUEST中的下划线,现在把它搞砸了
<div id="messagebox">
<?php
echo 'txt: [' . $_REQUEST['txt'] . ']<br>';
echo 'submit_btn: [' . $_REQUEST['submit_btn'] . ']<br>';
?>
</div>
答案 1 :(得分:0)
使用回车键,表单提交正确。但是在IE7中,提交按钮值会丢失,行为怪异。因此,您可以使用带有固定文本的隐藏文本字段来检查表单是否已提交。谢谢
<div id="messagebox">
<?php
echo 'txt: [' . $_POST['txt'] . ']<br>';
echo 'submit_btn: [' . $_POST['submit_btn'] . ']<br>';
echo 'checker: [' . $_POST['checker'] . ']<br>';
?>
</div>
<hr>
<div id="formbox">
<form method="POST" action="form.php" name="frms">
<input type="text" name="txt" id="txt" value=""><br>
<input type="hidden" name="checker" value="POST SUCCESS">
<input type="submit" name="submit_btn" id="submit_btn" value="Submit">
</form>
</div>