2010-05-24 27 views
26

Làm cách nào để có thể mở danh sách thả xuống bằng trình kích hoạt?Kích hoạt nhấp chuột vào hộp chọn không hoạt động trong jQuery

Đây là mã mà không làm việc:

$('select').trigger('click'); 

Just for note - mousedown và mouseup cũng không hoạt động.

+1

nghĩ đây là giải pháp cần thiết: http://stackoverflow.com/questions/499405/change-selected-value-of-drop-down-list-with-jquery –

+0

Tôi đã đã làm việc này: http://stackoverflow.com/a/10136523/2541 –

+0

có thể trùng lặp của [Làm thế nào bạn có thể lập trình cho một SELECT HTML để thả xuống (ví dụ, do mouseover)?] (http: // stackoverflow .com/questions/249192/how-can-you-programmatically-tell-an-html-select-to-drop-down-for-example-do) –

Trả lời

9

Điều bạn đang cố gắng đạt được là không thể. Ngay cả khi bạn kích hoạt click danh sách thả xuống sẽ không mở ra nếu người dùng nhấp vào nó. Nếu bạn muốn thay đổi giá trị hiện được chọn bằng giá trị mới, bạn có thể sử dụng hàm val. Tôi đoán giải pháp duy nhất là mô phỏng toàn bộ giao diện người dùng và cảm nhận của một phần tử select bằng cách sử dụng div.

+1

Cảm ơn bạn đã trả lời. Tôi không muốn thay đổi giá trị, chỉ muốn mở danh sách ... Có vẻ như không có giải pháp thích hợp cho việc này ... – sasa

11
 $('select').children('option').each(function() { 
      if ($(this).is(':selected')) 
      { $(this).trigger('change'); } 
     }); 
+1

Điều này có thể kích hoạt các sự kiện được đính kèm khác mà bạn có thể không muốn. –

-1

Bạn có thể làm như sau:

HTML:

<form> 
    <select> 
    <option value="opt1">Option 1</option> 
    <option value="opt2">Option 2</option> 
    <option value="opt3">Option 3</option> 
    </select> 
    <input type="submit" value="OK"></input> 
</form> 

Javascript (với jquery):

$("option[value='opt2']").attr("selected", "selected"); // Selects option 2 
    $("input[type='submit']").trigger("click"); // Submits the form 
+1

Điều này không mở được chọn, thay vào đó nó sẽ gửi biểu mẫu. –

4

Không có cách nào thích hợp để bấm vào một dropdown lập trình .

Bạn có thể chọn một tùy chọn qua:

$('#sourceOptions>option:eq(0)').prop('selected', 'selected'); 

Nếu bạn muốn mô phỏng người dùng nhấp chuột: bạn phải làm điều đó như @Renso nói nó:

$('#sourceOptions>option:eq(0)').prop('selected', 'selected').trigger('change'); 
7

Đã cho tôi một thời gian nhưng tìm thấy giải pháp:

(Chrome & CHỈ DÀNH CHO Safari)

function open(elem) { 
    if (document.createEvent) { 
     var e = document.createEvent("MouseEvents"); 
     e.initMouseEvent("mousedown", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); 
     elem[0].dispatchEvent(e); 
    } else if (element.fireEvent) { 
     elem[0].fireEvent("onmousedown"); 
    } 
} 

http://jsfiddle.net/oscarj24/GR9jU/

+5

Đóng. Tính năng này hoạt động trong Chrome và Safari nhưng không hoạt động trong Firefox hoặc IE. –

+1

mã này không thể hoạt động trên firefox – smallg

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