2016-08-29 1 views
0

jQuery UIコントロールグループを使用してHTMLフォームのチェックボックスをスタイル設定しています。入力値がPHPスクリプトで処理された後、結果はフォーム自体とともに同じページに表示され、ユーザはフィルタを調整できます。私がしようとしているのは、フォームが処理された後にチェックされたボックスを以前にチェックしておいて、ユーザーがどの選択基準が使用されているかを見ることです。これを実現するために、json_encodeを使用して、すべてのPHP $_POSTデータをJS変数に格納します。これは、ラベルを繰り返し、前にチェックされたものをマークするために使用します。問題は、私が使用できるコントロールグループウィジェットの唯一のオプションはui-controlgroup-itemのグループ内のすべての単一のラベルをアクティブとして表示するclassesであり、私の人生では条件付きにする方法を見つけることができません。私はif(label[for=' + var.value +'])'var<?php echo json_encode($_POST) ?>または類似のものを使うことができます。提案をいただければ幸いです。ここで 単一のjQuery UIのスタイルを設定するcontrolgroup-item

はHTMLです:

 <div id="currencyList"> 
      <label for="gbp">GBP</label> 
      <input type="checkbox" value="gbp" name="currency[]" id="gbp" > 
      <label for="usd">USD</label> 
      <input type="checkbox" value="usd" name="currency[]" id="usd"> 
      <label for="eur">EUR</label> 
      <input type="checkbox" value="eur" name="currency[]" id="eur"> 
     </div> 

そして、これは、JavaScriptのビットです:私はclassesオプションを使用してしようとしてスキップすることを決定し、代わりに数日間のためのソリューションを見つけることを試みた後

$("#currencyList").controlgroup({ 
     classes: { 
     "ui-controlgroup-item": "ui-checkboxradio-checked ui-state-active" 
     } 
}); 

答えて

0

controlgroupウィジェットの外に移動します。だからここに私のあまりにもかわいいが、実用的なソリューションです:

var postData = <?php echo json_encode($_POST) ?>; 

$("#currencyList").controlgroup(); 

$('#currencyList').children('label').each(function() { 
    if(postData.currency.indexOf($(this).attr("for")) >= 0){ 
     $(this).addClass("ui-checkboxradio-checked ui-state-active"); 
    } 
}); 
関連する問題