2011-10-27 12 views
0

ドロップダウンリストの選択に基づいて条件文を作成するにはどうすればよいですか?PHP - ドロップダウン選択=何かの場合

Alpha 
Bravo 
Charlie 
Other 

私はOtherは、ドロップダウンから現在選択されているエントリである場合、私はIf Other, Please Specifyを述べ改行をエコーし​​たい条件文を作成したい:

たちはエントリを持つドロップダウンリストを持っているとしましょう。しかし、現在選択されている項目でない場合は、その文字列を入力する必要はありません。 jQueryので

+1

への同様の呼び出しを使用します。 [その他]オプションが選択されているかどうかに応じて、非表示にするか、表示することができます。 –

+1

このクライアントサイドを実行するとします。もしそうなら、Javascriptが必要になります。 – Andri

+0

ユーザーがこのドロップダウンのあるフォームを送信すると、PHPでも実行できます。 – evilone

答えて

3
PHP

<select id="conditions" name="conditions"> 
    <option></option> 
<?php 
foreach($option in $optionList){ 
    echo "<option value=$option "; 
    if($_REQUEST["conditions"] == $option){ 
     echo 'selected="selected"'; 
    } 
    echo " > $option </option>"; 
} 
echo "</select>"; 

if($_REQUEST["conditions"] == "Other"){ 
    echo '<div id="specify" style="display:block">If Other, Please Specify</div>'; 
}else{ 
    echo '<div id="specify" style="display:hidden">If Other, Please Specify</div>'; 
} 
?> 

クライアント側

<script> 
    $('#conditions').change(function(){ 
     if($(this).val() == "Other"){ 
      $('#specify').show(); 
     }else{ 
      $('#specify').hide(); 
     } 
    }); 
</script> 
+0

@ mechaflash何か助けて?? –

3

のコメントを述べてきたように、あなたはJavaScriptでこれを実行する必要があります。次の関数はそれを行う必要があります。その後

function checkSelect(selId, text, outputDiv) { 
    var sel = document.getElementById(selId); 
    var d = sel.options[sel.selectedIndex].text; 
    if (d == text) { 
    document.getElementById(outputDiv).innerHTML = "If Other, Please Specify"; 
    } else { 
    document.getElementById(outputDiv).innerHTML = ""; 
    } 
} 

ドロップダウンが変更されたときに、この機能を実行するために、あなたのHTMLを調整します:

<select id='Sel1' onchange='check("Sel1", "Other", "DivReqDetails");'> 
    <option value='Alpha'>Alpha</option> 
    <option value='Bravo'>Bravo</option> 
    <option value='Charlie'>Charlie</option> 
    <option value='Other'>Other</option> 
</select> 
<div id='DivReqDetails'></div> 

はこのjavascriptのいずれかのページの<script>要素内、またはあなたのJavaScriptファイル内のインクルード

編集:jQueryにアクセスできる場合、checkSelect()をもっと強力にするには、divの内容を調整するだけではなく、 silyは、対display:block;のようなもののほかに、CSSを調整します。 JQueryのサポートがある場合、その例があります。

また、私は(あなたはそれが複数のフィールドをチェックし、それに応じて異なるテキストを表示することができますように)あなたはこの関数に必要なテキストを送信させるには改善のビットを追加している:

function checkSelect(selId, text, outputDiv, outputText) { 
    if ($("#"+selId).text() == text) { 
    $("#"+outputDiv).html(outputText).css("display","block").css("color","red"); 
    } else { 
    $("#"+outputDiv).html("").css("display","none").css("color","black"); 
    } 
} 

あるいは、もしフォームのさまざまな部分に表示するこれらの警告のいくつかがある場合は、個々の項目の代わりにCSSクラスに基づいて変更することができます。あなたが作っているものを変更調整することができ、明らかに...

function checkSelect(selId, text, outputCssClass, outputText) { 
    if ($("#"+selId).text() == text) { 
    $("."+outputCssClass).html(outputText).css("display","block").css("color","red"); 
    } else { 
    $("."+outputCssClass).html("").css("display","none").css("color","black"); 
    } 
} 

をこれはすべての警告divを変更しようとしていることに注意してください、あなたがあたり、フィールドのフィードバックを探しているなら、これは進むべき道ではありませんいずれの状態でもそこにある。表示されるテキストを調整する理由が決してない場合は、.html()部分を完全に削除する必要があります。同様に、色が赤色のときにこのdivを表示するだけの場合は、その調整を取り除き、必要なスタイルにハードコードします。関連する要素について他のCSS属性を変更するには、javascriptで行われる.css()

+0

もし私がテキストフィールドに値を設定し、それに 'other'のhtmlクラスを与えたら、javascriptを使ってそのクラスを操作してスタイルを隠し/可視条件に変更する編集を作成できますか?ドロップダウンフィールドがOTHERとして選択されていますか? – Mechaflash

+0

@Mechaflash、それはまっすぐなJavascriptの痛みになるでしょう。 jQueryにアクセスできますか? –

+0

私はより具体的かつ詳細な新しい質問を作成しました:http://stackoverflow.com/questions/7931002/php-webcalendar-hide-an-html-class-based-on-a-dropdown-list-selection – Mechaflash

関連する問題