单击时提交表单的复选框

时间:2011-05-16 19:18:31

标签: php javascript jquery codeigniter

我正在使用Codeigniter并想知道如何制作一个在点击时提交表单的复选框?

其次,此复选框将是几个复选框之一,它将充当过滤器,如产品> 20美元,产品< 30美元,我如何在网址中传递它?我在想/ 1 + 2 + 3

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
  • 设置网址
  • 通过返回false取消常规提交。

请注意,这两种解决方案都需要启用javascript。因此,有其他方式提交表单(提交按钮)是一件好事。不要依赖Enter来提交。 Opera将使用Enter键切换复选框,而不是提交表单。 如果您愿意,可以使用Javascript隐藏提交按钮,这样,拥有Javascript的用户将自动提交表单,而没有用户的用户可以使用该按钮。 您需要确保您的服务器端表格验证器不仅接受好的网址,还接受丑陋的网址(发布?filterx=on之类的值)。

答案 2 :(得分:1)

javascript问题似乎已经解决了;让我们走向代码签名者。

您可以通过以下两种方式之一传递网址。

  1. 惯用但有限:as / 1/2/3/4 /等。处理该url的控制器函数都可以使用func_get_args来读取它们,或者,如果您已经知道最多将传递多少个参数,则为所有非必要参数提供默认值null;

  2. 不是Codeigniterish,但严重的搜索参数更好:启用配置文件中的查询字符串,像通常使用GET(min=2&max=3等)传递参数,并且使用CI的输入类($min = $this->input->get('min'))获取其值。