我正在使用Codeigniter并想知道如何制作一个在点击时提交表单的复选框?
其次,此复选框将是几个复选框之一,它将充当过滤器,如产品> 20美元,产品< 30美元,我如何在网址中传递它?我在想/ 1 + 2 + 3
答案 0 :(得分:3)
没有多少使用Codeigniter,但我可以回答如何使用JS勾选复选框来提交表单:
<form id="something">
<input type="checkbox" name="foo" id="foo" value="yes" />
</form>
<script type="text/javascript">
$("#foo").click(function() {
if ($(this).is(":checked"))
$("#something").submit();
});
</script>
答案 1 :(得分:1)
这与PHP无关,也与CodeIgniter无关。解决方案是在元素的onclick事件中提交表单。
<input type="checkbox" name="filterx" onclick="document.forms[0].submit()" />
如果您愿意,可以使用表单的OnSubmit事件来很好地格式化网址。
要做到这一点,你可以
location.href = yourniceurl
,请注意,这两种解决方案都需要启用javascript。因此,有其他方式提交表单(提交按钮)是一件好事。不要依赖Enter来提交。 Opera将使用Enter键切换复选框,而不是提交表单。
如果您愿意,可以使用Javascript隐藏提交按钮,这样,拥有Javascript的用户将自动提交表单,而没有用户的用户可以使用该按钮。
您需要确保您的服务器端表格验证器不仅接受好的网址,还接受丑陋的网址(发布?filterx=on
之类的值)。
答案 2 :(得分:1)
javascript问题似乎已经解决了;让我们走向代码签名者。
您可以通过以下两种方式之一传递网址。
惯用但有限:as / 1/2/3/4 /等。处理该url的控制器函数都可以使用func_get_args
来读取它们,或者,如果您已经知道最多将传递多少个参数,则为所有非必要参数提供默认值null;
不是Codeigniterish,但严重的搜索参数更好:启用配置文件中的查询字符串,像通常使用GET(min=2&max=3
等)传递参数,并且使用CI的输入类($min = $this->input->get('min')
)获取其值。