0

私はフォームに取り組んでおり、誰かが持つことができる子供の数と年齢に関する情報を求めています. 目標は、最初の選択数 (子供の数) に応じて、年齢に応じた正しい選択数を表示することです。

JSONファイルへの属性に応じて正しい入力を作成するJSONファイル(質問がある場所)のコンテンツを取得するPHPファイルがあります(例: "criteria_type" = "select"、PHPは選択入力を作成します)。

PHP コードは次のようになります。

if($grp_critere['crt_type'] == 'select') {

    $html_grp_criteres = '<select name="'. $grp_critere['crt_id'].'|scq_'.$grp_critere['question_key'].'" onchange="change_select_number">'.$html_grp_criteres.'</select>';
}

問題は、必要な選択のみを表示する必要があることです。その人が 3 人の子供を選択すると、年齢を選択した 3 つの選択入力が表示されます。

そこで、さまざまなタイプの選択用に 2 つのタイプの「crt_type」を作成しました。

  1. select_origin : 次の選択入力の番号を変更する最初のもの

  2. select_update : 選択された数に依存する選択者

それを可能にする onchange 関数または Jquery の .change を使用した Javascript のアイデアはありますか?

ありがとう

4

1 に答える 1

0

追加の select 要素のコンテナーとなる div を作成します (この例では、id として "input_container" を指定します)。

また、最初の選択ボックス (子の数) に「選択」の ID を与えています。

コードに基づいて、 #selection は、変更時に change_select_number 関数を既に起動しているため、必要な操作は次のとおりです。

function change_select_number(){
    if($("#selection").val() > $("#input_container").children().length){ // if we need to add fields
        num = $("#selection").val() - $("#input_container").children().length; // find out how many elements we need to add
        for(i=0;i<num;i++){
            $("#input_container").append("<select style='display:block;' name='select_update["+$("#input_container").children().length+"]'><option>1<option>2</select>"); // add a select as a child of #input_container
        }
    }else if($("#selection").val() < $("#input_container").children().length){  // if we need to remove fields
        num = $("#input_container").children().length - $("#selection").val(); // find out how many elements to remove
        for(i=0;i<num;i++){
            $("#input_container select:last-child").remove(); // remove the last select from #input_container
        }
    }
}
于 2013-06-18T14:36:32.843 に答える