2011-09-12 120 views
0

我需要一些幫助。 我正在製作一個擁有表格的網站,並且響應文本(在選中複選框後立即顯示)取決於選中哪個複選框。像this example at the bottom只有複選框,而不是單選按鈕,並且比這更復雜一點。如何根據選中的複選框創建回覆?

這是三個複選框,所以它是五個場景;

1 - 2 - 3 
--------- 
O - O - O 
X - O - O 
X - X - O 
X - O - X 
X - X - X 

我想有5個不同的迴應,並想知道如何去做。我之前使用過AJAX,但我不記得太多..我一直在想,可以使用get-parameters從一個php文件解析響應......但我不知道。 我並不是所有的答案和條件都寫在jquery/javascript

所以!任何人都可以幫我嗎? :)希望我已經寫得夠好,讓你瞭解我的問題!

在此先感謝!

+0

什麼問題? – bevacqua

+2

我覺得三個複選框使2^3 = 8分的情況。 –

+0

^薩赫勒打我吧^ –

回答

0

我發現一個簡單的方法來完成這項工作。你將不得不嵌入Jquery Form Plugin。 POST參數由response.php處理。在提交表單每次有人改變了其中一個複選框的狀態,和響應在輸出-DIV更新。

<head> 
    <script type="text/javascript" src="jquery-1.6.3.min.js"></script> 
    <script type="text/javascript" src="jquery.form.js"></script> 
</head> 
<body> 
    <form id="formId" name="formName" method="post"> 
    <input type="checkbox" name="Check[]" value="1" class="check"/> 
    <input type="checkbox" name="Check[]" value="2" class="check"/> 
    <input type="checkbox" name="Check[]" value="3" class="check"/> 
    </form> 

<div id = "output"></div> 
<script> 
// prepare the form when the DOM is ready 
$(document).ready(function() { 
    var options = { 
     target: '#output', // target element(s) to be updated with server response 
     url: 'response.php' // override for form's 'action' attribute 
    }; 

    $('.check').change(function() { 
     $('#formId').ajaxSubmit(options); 
     return false; 
    }); 
}); 
</script> 
</body> 
</html> 
0

我想你鏈接的關於:checked選擇器的頁面可能是這個上下文中最有用的東西。

我不確定是否有順利的方法來確定它們的組合是否被檢查。我想你可以給每個人一個不同的二進制值(1,2,4),並將所有檢查框的值相加?

然後,您可以將每個可能的總和與不同的響應呼叫相關聯。

當然,如果你正在處理在服務器端的響應,它可能是一個更容易一點,因爲服務器代碼應該得到對這些值的列表。

不知道,如果它是有用的,但在Python我能勝任這樣的事情在服務器上是這樣的:

RESPONSES = [ 
    function_1, 
    ..., 
    function_8] 
def handle_checkboxes(request): 
    response_code = sum(list(request.params["checkboxes"])) 
    response = RESPONSES[response_code]() 
    return response 

我想這將是大約在PHP一樣。當然,如果你打算在客戶端處理這個問題,代碼會有點不同。但幾乎相同的概念。

+0

嗨,這就是我認爲是很好。但是,如果我總結不同的值,其中一些會返回相同的值。 1 + 2,只有3例如。我認爲這將是一個選項,可以返回一個文本字符串並對每個檢查的值進行擴展。如果選中1和3,則文本字符串爲「chk = 1&chk = 3」,然後將文本字符串發送到讀取GET參數並通過XHR返回響應的php腳本。 – guzh

+0

這就是爲什麼你使用二進制值(在這種情況下是1,2,4),因爲然後每個可能的組合產生一個獨特的輸出。 –

+0

啊,對不起。我沒有看到! – guzh

0
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
<script language="javascript"> 

    $(document).ready(function(){ 

     $(".checks").click(function(){ 

        one = $("#one").attr("checked");  
       two = $("#two").attr("checked"); 
       three = $("#three").attr("checked"); 

       if(!one && !two && !three) 
       { 
        alert("0-0-0"); 
       } 
       else if(one && !two && !three) 
       { 
        alert("1-0-0"); 
       } 
       else if(one && two && !three) 
       { 
        alert("1-1-0"); 
       } 
       else if(one && !two && three) 
       { 
        alert("1-0-1"); 
       } 
       else if(one && two && three) 
       { 
        alert("1-1-1"); 
       } 

         });    


       }); 

</script> 

和HTML:

<form> 
1<input type="checkbox" id="one" class="checks" /><br> 
2<input type="checkbox" id="two" class="checks" /><br> 
3<input type="checkbox" id="three" class="checks" /> 
</form> 
+0

嗨,謝謝你的回答!但我想使用XHR來返回PHP文件的響應,以及PHP中的條件。使用XHR和Get參數。謝謝無論如何:) – guzh

+0

其好兄弟.. :) – mithunsatheesh

0

這裏是JavaScript:

function countChecked() { 
    var str=""; 
    a= $("#a").attr("checked");  
    b= $("#b").attr("checked"); 
    c= $("#c").attr("checked"); 

    if (a){ str+='X'; } else str+='0'; 

    str+='-'; 

    if (b){ str+='X'; }else str+='0'; 

    str+='-'; 

    if (c){ str+='X'; }else str+='0'; 

    $("div").text(str); 
} 
countChecked(); 
$(":checkbox").click(countChecked); 

這裏是HTML

<input type="checkbox" id="a" value="1" /> 
<input type="checkbox" id="b" value="2" /> 
<input type="checkbox" id="c" value="3" /> 
<br> 
<div></div> 

您還可以檢查此JSFiddle

+0

嗨!謝謝你的回答,但正如我在帖子中提到的(現在強調),我想寫一個php文件中的條件和響應。像發送XHR到php文件並檢查get參數。 X's和O's只是指出情景。答案將是5個不同的句子..你能幫我進一步嗎? :) – guzh

+0

對不起,我對PHP一無所知,但我會將php標籤,也許別人可以幫助你。 – medopal

+0

啊,我以爲我做到了。謝謝 :) – guzh

相關問題