變化

2011-11-01 24 views
0

我有一個INTIAL一批像這些選項:變化

<select name="item[type]"> 
    <option value="0" class="dr">First</option> 
    <option value="1" class="dr">Second</option> 
    <option value="2" class="dr">Third</option> 
    <option value="3" class="dr">Fourth</option> 
</select> 

我要檢查,如果一個變量isset($test)定義。如果是,那麼我想更改value等於$test的選項。像這樣的東西<OPTION SELECTED>

例如。 $test = 3;所以,選擇的選項應該是第四個。如果$test爲空或未定義,則第一個應該是所選的選項。

回答

2
<select name="item[type]" id="selectBoxId"> 
<option value="0" class="dr">First</option> 
<option value="1" class="dr">Second</option> 
<option value="2" class="dr">Third</option> 
<option value="3" class="dr">Fourth</option> 
</select> 


<script type="text/javascript"> 
    var test = "<?= $test; ?>"; 
    if (test != '' && parseInt(test)) { 
     document.getElementById('selectBoxId').selectedIndex = test; 
    } 
</script> 
+1

我只會用JavaScript來改變某種用戶輸入後的DOM。但是,在這種情況下,您已經知道應該選擇哪個選項,因此不需要使用JavaScript。相反,確保DOM已經擁有使用純粹PHP邏輯的所有正確信息,以便在正確的位置添加所選屬性。此外,唯一的方法是將JavaScript添加到同一頁面,以便您可以訪問PHP變量,或者將變量添加到DOM中隱藏的某個位置,以便您可以使用外部JS腳本檢索它。這兩者都遠非理想。 – Alec

+0

哦,我絕對同意。但我們不知道他的劇本是如何組織的,或者他們甚至分裂了。也許他正在使用一些模板系統,以便爲其定義變量或任何情況。我只是提供了一個簡單的解決方案,以獲得給我的非常有限的信息。不過,我很欣賞你的性格,並且全心全意地同意這一點。 –

1

從選擇名稱中刪除「[type]」,將其簡化爲「item」。 然後執行此代碼。

$test = isset($_POST['item']) ? $_POST['item'] : "0";

2

方式一:

<select name="item[type]"> 
    <option <?=$test==0?'selected="selected"':'';?> value="0" class="dr">First</option> 
    <option <?=$test==1?'selected="selected"':'';?> value="1" class="dr">Second</option> 
    <option <?=$test==2?'selected="selected"':'';?> value="2" class="dr">Third</option> 
    <option <?=$test==3?'selected="selected"':'';?> value="3" class="dr">Fourth</option> 
</select> 

另:

<? $selected[$test] = 'selected="selected"'; ?> 

<select name="item[type]"> 
    <option <?=$selected[0];?> value="0" class="dr">First</option> 
    <option <?=$selected[1];?> value="1" class="dr">Second</option> 
    <option <?=$selected[2];?> value="2" class="dr">Third</option> 
    <option <?=$selected[3];?> value="3" class="dr">Fourth</option> 
</select> 
1
// assuming you are using a loop: in the loop where you create the options 
    $selected_html = $test == $loop_var ? ' selected="selected" ' : ''; 
    echo "<option value=\"$loop_var\" class=\"dr\"$selected_html>$text</option>";