我有以下网络表单:
<form action="processor.php" method="post">
<input type="checkbox" name="cb" onclick="submit()">
<input type="submit" name="search" value="Search">
</form>
因此,无论是单击提交按钮还是复选框,此表单都会提交到process.php页面。但提交的名称为&#34; search&#34;仅在明确单击按钮时发送,而不是在单击复选框时发送。出乎我意料。我希望用submit()命令提交表单也会发送所有参数(包括提交按钮&#34; s&#34; search&#34;参数)。 所以在PHP代码中我不能使用:
if(isset($_POST['search'])
测试表单是否已提交,我必须使用:
if($_SERVER['REQUEST_METHOD']=='POST')
这是提交按钮的正常行为吗?
答案 0 :(得分:2)
是的,这是正确的行为。 提交输入的值仅在激活或单击时发送,因为您在此处通过其合乎逻辑的功能提交表单。
检查此示例:
<form action="edit.php" method="post">
<input type="text" name="name">
<input type="submit" name="action" value="Save">
<input type="submit" name="action" value="Preview">
</form>
此行为允许在表单中进行多次提交操作。
__
在复选框上,单击模拟单击提交按钮而不是使用submit()
答案 1 :(得分:0)
是的,这是正常的。我为你做了一些代码让它工作:)。 在复选框和提交按钮中添加一个类。并将js代码添加到您的html或单独的js文件中。
<form action="processor.php" method="post">
<input type="checkbox" class="checkbox" name="cb" onclick="submit()">
<input type="submit" class="sub" name="search" value="Search">
</form>
当你单击复选框时它会进入这个功能,它会看到它何时启用,以及它是否模拟了点击提交按钮。
$(".checkbox").change(function() {
if(this.checked) {
$(".sub").click();
}
});