2013-02-26 78 views
1

我有拼車網站的抵達城市和出發城市的兩個選擇標籤,我想阻止用戶選擇到達城市時選擇同一城市,並選擇這裏起飛城市是一個例子:根據其他選擇值隱藏選項

<select name="departure" size="1"> 
    <option value="1">NY</option> 
    <option value="2">FL</option> 
    <option value="3">LA</option> 
    </select> 

    <select name="arrival" size="1"> 
    <option value="1">NY</option> 
    <option value="2">FL</option> 
    <option value="3">LA</option> 
    </select> 

我只是想防止用戶在使用JavaScript或任何其他解決方案

回答

2

對於一個簡單的解決方案都選擇字段選擇同一個城市,我建議:

function deDupe(el) { 
    var opt = el.selectedIndex, 
     other = el.name == 'departure' ? document.getElementsByName('arrival')[0] : document.getElementsByName('departure')[0], 
     options = other.getElementsByTagName('option'); 
    for (var i = 0, len = options.length; i < len; i++) { 
     options[i].disabled = i == opt ? true : false; 
    } 
} 

var departure = document.getElementsByName('departure')[0], 
    arrival = document.getElementsByName('arrival')[0]; 

deDupe(document.getElementsByName('departure')[0]); 

departure.onchange = function() { 
    deDupe(departure); 
}; 
arrival.onchange = function() { 
    deDupe(arrival); 
}; 

JS Fiddle demo

參考文獻:

+0

哇,謝謝,這真的很有用,除了第一個選項總是禁用,因爲在真正的選擇標籤中我有'',在第二個選擇中我有'選項值=「」>到達',並與您的解決方案選定的選項不是第一個空的,但它是第一個城市 – Aladin 2013-02-27 19:17:42

+0

在哪裏可以添加條件繞過每個領域的第一個選項,因爲它不是一個城市領域它是隻是指標 – Aladin 2013-02-28 15:38:36

+0

最簡單也是最可靠的方法是省略文檔就緒/頁面加載事件('deDupe(document.getElementsByName('departure')[0]);'call * outside * 'onchange'事件處理程序):[JS Fiddle demo](http://jsfiddle.net/davidThomas/qE4fN/1/)。 – 2013-02-28 17:05:35