2011-10-27 77 views
0

我該如何去創建基於下拉列表選擇的條件語句?PHP - 如果下拉選擇=東西

比方說我們有一個條目的下拉列表:

Alpha 
Bravo 
Charlie 
Other 

我想創造一個如果Other是從下拉列表中當前選擇的條目,我想呼應換行符說明If Other, Please Specify條件語句。但是,如果它不是當前選定的條目,我不希望該字符串填充。

+1

這將用JavaScript來完成。您可以隱藏或顯示,具體取決於是否選擇了其他選項 –

+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>'; 
} 
?> 

在jQuery中的客戶端

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

@mechaflash什麼幫助? –

3

正如評論所說,你需要做到這一點在JavaScript。以下功能應該做到這一點。

加入此JavaScript或者頁面的<script>元素中,或者裏面你的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> 

編輯:如果你有權訪問jQuery,你可以使checkSelect()做更多的不僅僅是調整div的內容(因爲你可以ea sily調整CSS,例如display:hidden; vs display:block;以及顏色。這裏有一個例子,如果你碰巧有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類而不是單個項目更改內容。請注意,這是不會改變的所有警示div的,所以如果你正在尋找每場反饋,這是不是要走的路...

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"); 
    } 
} 

很明顯,你可以調整是什麼樣的變化在那裏的任何條件。如果您從未有任何理由調整顯示的文字,則應完全放棄.html()部分。同樣,如果您只在顏色爲紅色時才顯示此div,請放棄該調整並將其樣式硬編碼爲您想要的樣式。您可以通過使用類似的調用來更改任何其他css屬性相關的元素,通過使用類似的調用.css()

+0

可以說,如果我要填充文本字段併爲其指定html類別「other」,您是否可以創建一個關於如何使用javascript來操作該類以將其樣式更改爲隱藏/可見條件的編輯下拉字段被選爲OTHER? – Mechaflash

+0

@Mechaflash,這將是一個痛苦的直接的Javascript(即beit可行)。你有沒有訪問jQuery? –

+0

我創建了一個具有更多細節和細節的新問題:http://stackoverflow.com/questions/7931002/php-webcalendar-hide-an-html-class-based-on-a-dropdown-list-selection – Mechaflash