2011-09-26 41 views
26

Hiện nay tôi đang sử dụng này:Chuyển trên một số tùy chọn trong hộp chọn

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

nó chuyển hướng tôi vào vị trí bên trong của giá trị tùy chọn. Nhưng nó không hoạt động như mong đợi .. có nghĩa là nếu tôi nhấp vào tùy chọn đầu tiên của lựa chọn, sau đó onChange hành động không chạy. Tôi đã suy nghĩ về javascript, nhưng tôi nghĩ rằng bạn sẽ có một số gợi ý tốt hơn guys. Vì vậy, làm thế nào tôi có thể làm cho nó hoạt động nếu tôi bấm vào mỗi tùy chọn nó sẽ chuyển hướng tôi đến giá trị của nó?

+0

Đó là JavaScript. (inline JavaScript) – Nathan

+0

Ah, ok cảm ơn vì điều đó: p – Lucas

Trả lời

80

Vì tùy chọn đầu tiên đã được chọn, sự kiện thay đổi sẽ không bao giờ được kích hoạt. Thêm một giá trị rỗng làm giá trị đầu tiên và kiểm tra để trống trong việc gán vị trí.

Dưới đây là một ví dụ:

<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> 

Và đây là fiddle: http://jsfiddle.net/bL5sq/

+0

Tôi đã làm, nhưng nếu người dùng sẽ nhấn nút quay lại trên trình duyệt, thì anh ta có thể chọn giá trị 'trống' và vị trí tập lệnh sẽ bị hỏng. – Lucas

+0

@Lucas Sau đó, thêm thuộc tính 'disabled' vào giá trị" Chọn ... ", vì vậy khi bạn nhấp vào nó sẽ không có gì xảy ra:' ' – Nathan

+2

@All - Không cần đâu. Kịch bản trên không phá vỡ !! –

17

tôi muốn khuyên di chuyển ra khỏi nội tuyến JavaScript, một cái gì đó như sau:

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.

Trong mark-up trong Fiddle JS tùy chọn đầu tiên không có giá trị được giao, nếu có click lên không nên kích hoạt các chức năng để làm bất cứ điều gì, và kể từ đó là giá trị mặc định cách nhấn vào select và sau đó chọn mà mặc định đầu tiên option sẽ không kích hoạt sự kiện change.

Cập nhật:
URL chuyển hướng bắt buộc do lỗi liên quan đến nội dung hỗn hợp giữa JS Fiddle và cả hai tên miền, cũng như cả hai miền yêu cầu 'sameorigin' cho nội dung có khung. - Albert

+2

Ba năm quá trễ, nhưng đây là câu trả lời hay nhất IMO. – Eckstein

+0

liên kết fiddle của bạn đưa ra câu trả lời 404, tốt khác; HTML bị thiếu, mặc dù – Manube

+0

sẽ nội tuyến so với javascript chuẩn làm cho bất kỳ khác nhau như xa như google crawl là có liên quan? – splinter123

Các vấn đề liên quan