<form action="" method="get" name="combination" target="_self">
<input type="checkbox" name="tag[]" value="pop" />pop<br /><br />
<input type="checkbox" name="tag[]" value="rock" />rock<br /><br />
<input type="checkbox" name="tag[]" value="indie" />indie<br /><br />
<input type="checkbox" name="tag[]" value="electronic" />electronic<br />
<input name="" type="submit">
</form>
如果用户点击pop和rock box我想将表单发送到www.mysite.com/?view=listen&tag[]=pop&tag[]=rock
我该怎么办?
用户可以选择一个,两个或三个标签。所以标签数组的元素号是可变的。
答案 0 :(得分:2)
您不能使用纯HTML。您只能为action
属性指定一个网址。
但是你可以使用JavaScript(如果没有启用JS,它将使你的表单变得无用)。只需选中复选框的checked
状态,然后相应地更换action
网址。
答案 1 :(得分:1)
实际上您不希望表单调用操作,因此您必须取消提交。 它错过了返回错误。 “location.href”也是错误的,右边是“parent.window.location.href”
现在尝试和工作。
<form action="" method="get" name="combination" target="_self">
<input type="checkbox" name="tag[]" value="pop" />pop<br /><br />
<input type="checkbox" name="tag[]" value="rock" />rock<br /><br />
<input type="checkbox" name="tag[]" value="indie" />indie<br /><br />
<input type="checkbox" name="tag[]" value="electronic" />electronic<br />
<input name="" type="submit">
</form>
<script>
$("form").submit(function(){
var url = "http://www.mysite.com/?view=listen&";
var i = 0;
$("input:checked").each(function(){
url += "tag[" + i + "]=" + $(this).val() + "&";
i++;
});
parent.window.location.href = url;
return false;
});
</script>
答案 2 :(得分:1)
也许我没有在这里得到确切的问题,但为什么不对这样的表单做一些小改动:
<form action="http://www.mysite.com/">
<input type="hidden" name="view" value="listen" />
<input type="checkbox" name="tag[]" value="pop" />pop<br /><br />
<input type="checkbox" name="tag[]" value="rock" />rock<br /><br />
<input type="checkbox" name="tag[]" value="indie" />indie<br /><br />
<input type="checkbox" name="tag[]" value="electronic" />electronic<br />
<button type="submit">submit</button>
</form>
答案 3 :(得分:0)
这就是表单操作的用途 - 在这里您将指定表单的位置。
使用jQuery,您可以编辑特定事件的表单操作。为您的表单添加my_form
和您的复选框描述性ID:
<form id="my_form" action="" method="get" name="combination" target="_self">
<input id="pop_check" type="checkbox" name="tag[]" value="pop" />pop<br /><br />
<input id="rock_check" type="checkbox" name="tag[]" value="rock" />rock<br /><br />
<input type="checkbox" name="tag[]" value="indie" />indie<br /><br />
<input type="checkbox" name="tag[]" value="electronic" />electronic<br />
<input name="" type="submit">
</form>
然后,在表单下面,您可以编写以下jQuery代码:
<script type="text/javascript">
$("checkbox[name='tag']").on("click", function( //when any of the checkboxes is clicked the following code runs
if($("#pop_check").is(":checked") || $("#rock_check").is(":checked")){ //if one of the two target check boxes is checked, the form action will be changed as desired
$("#my_form").attr("action","www.mysite.com/?view=listen");
}else if(!$("#pop_check").is(":checked") && !$("#rock_check").is(":checked")){ //since the user can also toggle off all checkboxes again, we need to check for that too and change the form action back to "" if required
$("#my_form").attr("action","");
}
));
</script>
如果你(即将)学习jQuery,我强烈推荐它。这里有一些非常好的教程,你可能会觉得有用,他们教我几乎所有关于jQuery的知识:http://thenewboston.org/list.php?cat=32
还有另一种方法可以做到这一点。在提交表单后运行的php代码中,您可以简单地检查是否选中了这两个复选框中的任何一个,并根据使用php的标题函数重定向或不重定向:
<?php
//After form submission with form action="" (i.e. at the top of your php file)
if(in_array("pop", $_GET['tag']) || in_array("rock", $_GET['tag'])){
header('Location:www.mysite.com/?view=listen&tag=pop&tag=rock');
exit;
}
?>
实际上,你应该使用post作为form方法而不是get,因为表单结果不需要是可收藏的。阅读更多关于php内置header()和in_array()函数的内容。