2013-07-14 172 views
1
<form name="form_name" action="/" method="get"> 
      <% if params["title"].present?%> 
      <% if params["title"] == "1" %> 
      <input type="checkbox" name="title" onclick="this.form.submit();" value="1" checked> Title <input name="title" type="hidden" value="0" /> 
      <%else%> 
      <input type="checkbox" name="title" onclick="this.form.submit();" value="1"> Title 
      <%end%> 

      <%else%> 
      <input type="checkbox" name="title" onclick="this.form.submit();" value="1">Title 
     <%end%> 
    <% if params["description"].present?%> 
      <% if params["description"] == "1" %> 
      <input type="checkbox" name="description" onclick="this.form.submit();" value="1" checked> Description <input name="description" type="hidden" value="0" /> 
      <%else%> 
      <input type="checkbox" name="description" onclick="this.form.submit();" value="1"> Title 
      <%end%> 

      <%else%> 
      <input type="checkbox" name="description" onclick="this.form.submit();" value="1">Title 
     <%end%> 

    </form> 

目標:有提交的onclick,同時保留其他未修改的複選框保存複選框狀態的onclick

我有一堆的提交表單被點擊時,他們的複選框的狀態複選框。它們在點擊時返回到同一頁面,並帶有新的GET數據。上面的代碼是一種黑客,適用於一個複選框。但由於我這樣做,它不適用於多個複選框。

這似乎並不是這樣做的方式。我相信正確的答案是確定複選框是選中還是取消選中javascript或jquery。我不是其中任一那舒適,所以,如果有人可以告訴我在正確的方向...

+0

我想這是ASP,所以我不張貼的答案,因爲我不知道的ASP,但你應該使用URL參數( GET參數)如下:如果有一個get參數__element_name__並且它是true,那麼應該檢查相同的複選框(在輸出此複選框之前執行此操作) –

+0

@MNVOH,它明確標記爲RoR。 –

+0

你能列出多個複選框的代碼嗎? –

回答

0

問題是多餘的隱藏的輸入,

 <form name="form_name" action="/" method="get"> 
     <% if params["title"].present?%> 
      <% if params["title"] == "1" %> 
      <input type="checkbox" name="title" onclick="this.form.submit();" value="1" checked> Title 
      <%else%> 
      <input type="checkbox" name="title" onclick="this.form.submit();" value="1"> Title 
      <%end%> 
     <%else%> 
      <input type="checkbox" name="title" onclick="this.form.submit();" value="1">Title 
     <%end%> 
     <% if params["description"].present? %> 
      <% if params["description"] == "1" %> 
      <input type="checkbox" name="description" onclick="this.form.submit();" value="1" checked> Description 
      <%else%> 
      <input type="checkbox" name="description" onclick="this.form.submit();" value="1"> Description 
      <%end%> 

     <%else%> 
      <input type="checkbox" name="description" onclick="this.form.submit();" value="1">Description 
     <%end%> 
     </form> 

他們要提交一個零值,如果檢查框未選中,但關於瀏覽器的好處在於,它不會提交未經檢查的複選框,並且<% if params["description"].present? %>此類條件在未檢查其值的情況下會變爲false。去除這些多餘的條件後

所以更優化的代碼,

 <form name="form_name" action="/" method="get"> 
     <% if params["title"] == "1" %> 
      <input type="checkbox" name="title" onclick="this.form.submit();" value="1" checked> Title 
     <%else%> 
      <input type="checkbox" name="title" onclick="this.form.submit();" value="1"> Title 
     <%end%> 

     <% if params["description"] == "1" %> 
      <input type="checkbox" name="description" onclick="this.form.submit();" value="1" checked> Description 
     <%else%> 
      <input type="checkbox" name="description" onclick="this.form.submit();" value="1"> Description 
     <%end%> 
     </form>