2011-09-26 15 views
26

seçkin seçeneği yönlendir:Bunu kullanıyorum anda seçme kutusunda

<select ONCHANGE="location = this.options[this.selectedIndex].value;"> 

o seçenek değerinin iç yere beni yönlendirir. Ama beklendiği gibi çalışmıyor .. select'in ilk seçeneğine tıklarsam, onChange eyleminin çalışmadığı anlamına gelir. Javascript hakkında düşünüyordum, ama bence daha iyi önerilerin var. Peki, her seçeneğe tıklarsam, beni bu değere yönlendireceğimi nasıl çalıştırabilirim?

+0

Bu zaten bir JavaScript. (satır içi JavaScript) – Nathan

+0

Ah, bunun için teşekkürler: p – Lucas

cevap

80

İlk seçenek önceden seçildiğinden, değişiklik olayı hiç tetiklenmez. İlk olarak boş bir değer ekleyin ve konum atamasında boş olup olmadığını kontrol edin. İşte

bir örnek:

<select onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);"> 
    <option value="">Select...</option> 
    <option value="http://google.com">Google</option> 
    <option value="http://yahoo.com">Yahoo</option> 
</select> 

Ve burada keman var: http://jsfiddle.net/bL5sq/

+0

Yaptım, ancak kullanıcı tarayıcıdaki geri düğmesine basarsa, o zaman 'boş' değerini seçebilir ve komut dosyası konumu bozulur. – Lucas

+0

@Lucas Sonra "devre dışı bırak" özniteliğini "Seç ..." değerine ekleyin, böylece hiçbir şey olmayacak: '' – Nathan

+2

@All - Buna gerek yok. Yukarıdaki betik kırılmaz! –

17
şiddetle aşağıdaki gibi bir şey için, satır içi JavaScript uzaklaşan öneririm

:

function redirect(goto){ 
    var conf = confirm("Are you sure you want to go elswhere?"); 
    if (conf && goto != '') { 
     window.location = goto; 
    } 
} 

var selectEl = document.getElementById('redirectSelect'); 

selectEl.onchange = function(){ 
    var goto = this.value; 
    redirect(goto); 

}; 

JS Fiddle demo (404 linkrot victim) .
JS Fiddle demo via Wayback Machine.
Forked JS Fiddle for current users.

JS Fiddle'daki işaretlemede, ilk seçeneğin atanmış bir değeri yoktur, bu nedenle tıklatma işlevi herhangi bir şey yapmasını tetiklememelidir ve varsayılan değer select'u tıklatıp varsayılan ilk değer olan option'u seçtiği için Yine de change etkinliğini tetiklemez.

Güncelleme:
son Örnekteki (2017/08/09) yönlendirme URL'ler karışık JS Fiddle ve her iki alan arasında içerik, hem de çerçeveli içerik 'sameorigin' gerektiren her iki alan ile ilgili hatalar nedeniyle dışarı takas gerekli. - Albert

+2

Üç yıl çok geç, ama bu en iyi cevap IMO. – Eckstein

+0

keman bağlantınız 404, aksi takdirde iyi bir cevap verir; HTML eksik olsa da, – Manube

+0

, standart javascript ile aynı hizada olacak ve google taramayla ilgili herhangi bir değişiklik yapamayacak mı? – splinter123