2011-05-16 108 views
1

我正在使用Codeigniter,想知道如何創建一個點擊時提交表單的複選框?其次,這個複選框將是幾個複選框中的一個,這些複選框將用作產品> $ 20,產品< $ 30的過濾器,我如何在url中傳遞它?我在想/ 1 + 2 + 3點擊提交表單的複選框

+0

這真是一個客戶端(問題JavaScript)的問題.. – Neal 2011-05-16 19:21:45

回答

3

未與笨的工作很多,但我可以回答如何使表格上檢查與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

這與PHP和CodeIgniter無關。解決方案是在元素的onclick事件中提交表單。

<input type="checkbox" name="filterx" onclick="document.forms[0].submit()" /> 

如果您願意,可以使用表單的OnSubmit事件來很好地格式化網址。

要做到這一點,你可以

  • 獲得所有所需元素的值,
  • 修建從它一個很好的網址,
  • 設置使用location.href = yourniceurl網址,
  • 取消定期提交通過返回false。

請注意,兩種解決方案都需要啓用javascript。所以有其他方式提交表單(提交按鈕)是一件好事。不要依靠按Enter鍵進行提交。 Opera將使用Enter鍵切換複選框而不是提交表單。 如果你喜歡,你可以使用Javascript隱藏提交按鈕,這樣,具有Javascript的用戶將自動提交表單,而沒有用戶可以使用該按鈕。 你將需要確保你的服務器端表單驗證器不僅接受漂亮的url,而且醜陋的url(它的值也是?filterx=on)也是如此。

1

JavaScript的問題似乎已經已經解決了;讓我們來看看codeigniter的。

您可以通過以下兩種方式之一傳遞網址。

  1. 習語但不限:如/ 1/2/3/4 /等。處理該url的控制器函數都可以使用func_get_args來讀取它們,或者如果您已經知道最多可以傳遞多少個參數,則將默認值null賦予所有非必要的參數;

  2. 不Codeigniterish但對於搜索參數嚴重更好:使你的配置文件中的查詢字符串傳遞參數,你用GET(min=2&max=3等)通常會與CI的輸入級得到他們的價值($min = $this->input->get('min')) 。

相關問題