2010-03-12 34 views
8

tôi đang làm việc với một lựa chọn. Tôi muốn kích hoạt và sự kiện khi người dùng chọn một giá trị.Sự kiện chọn Jquery

Tôi đang sử dụng sự kiện "thay đổi", vấn đề là nếu người dùng mở lựa chọn nhưng chọn cùng một tùy chọn được chọn, trình kích hoạt sẽ không kích hoạt.

Có cách nào để nắm bắt sự kiện khi người dùng chọn tùy chọn độc lập nếu tùy chọn giống với tùy chọn đã được chọn không?

cảm ơn.

+3

Tại sao bạn muốn tái lửa một sự kiện nếu sự lựa chọn không thay đổi? –

Trả lời

3

Tôi không chắc chắn cho dù đó là một giải pháp qua trình duyệt nhưng một cái gì đó như thế này:

$("#mySelect option").click(function() { 
    // do sth 
}); 

trình tốt trong Opera/Firefox.

+0

Tôi có nhiều lựa chọn trong cùng một trang và tôi nghĩ tùy chọn này sẽ không hiệu quả. Nhưng cảm ơn. – Patxi1980

+3

Bạn có thể có nhiều 'select's - Tôi không biết tại sao nó có thể là một vấn đề? Chỉ cần sử dụng bộ chọn chính xác. – Crozin

+0

Concur with @Crozin. Ví dụ trên sẽ không gây ra bất kỳ xung đột nào vì dấu băm biểu thị id. Chỉ một phần tử phải có id riêng đó. – Tass

0

Tôi nghĩ tùy chọn bạn cần là "nhấp" thay vì thay đổi.

+0

Thao tác này sẽ không hoạt động như mong đợi vì nó sẽ khiến sự kiện kích hoạt ngay khi bạn mở tùy chọn để chọn tùy chọn của mình. Do đó, nếu bạn dự định sử dụng lựa chọn người dùng trong mã của mình, nó có thể gây hiểu lầm. – ryanulit

4

Bạn có thể nắm bắt cả sự kiện thay đổi và nhấp chuột bằng phương thức liên kết. Điều này sẽ cho phép bạn để bắt hầu hết các tương tác bàn phím và chuột

$('selector').bind('click change',function() {}) 
+0

Nếu tôi đặt thay đổi vấn đề là bị sa thải khi tôi bấm vào lựa chọn để xem các tùy chọn. – Patxi1980

+0

Làm thế nào về keyup và mouseout? Mục tiêu cuối cùng của điều này là gì, Như gấu nói ở trên tại sao bạn cần phải kích hoạt lại sự kiện nếu giá trị không thay đổi? –

+1

Tôi không thể nói cho Patxi, nhưng trong ứng dụng của tôi, chọn một tùy chọn ở trên cùng chọn tuyên truyền giá trị đó cho các lựa chọn khác trên trang.Điều ngược lại là không đúng (chọn một tùy chọn ở nơi khác sẽ không thay đổi giá trị được lựa chọn hàng đầu). Tôi đã tìm thấy rằng nếu người dùng thay đổi lựa chọn hàng đầu thành '1' và sau đó thay đổi một vài lựa chọn khác thành '2' nhưng sau đó quyết định rằng anh ấy thực sự muốn tất cả họ là '1', anh ấy có thể "lại chọn "'1' (đã là tùy chọn đã chọn) ở đầu trang. – Weezle

-2
$('#selectID').change(function(){ 

    if($(this).val() == "week"){ 
    //trigger here 
    } 
}); 
<select id="selectID"> 
    <option>week</option> 
</select> 
0

Tôi không chắc chắn đây là những gì bạn cần. Dưới đây không phải là câu trả lời mà là một mẹo.

Trong trường hợp của tôi, tôi thay đổi giá trị của hộp chọn sau khi nhận được giá trị của nó.

$("selector").on('change', function() { 
    var selectedValue = $(this).val().trim(); 
    if (selectedValue == 'EXPECTED_VALUE') { 
    //do somethings 
    } 
    //change the value, so next time when you choose same option 
    //again the change event can be trigger 
    $(this).val('OTHER_VALUE'); 
} 

OTHER_VALUE có thể EXPECTED_VALUE có thêm không gian. Ví dụ: EXPECTED_VALUE = 'foo' rồi OTHER_VALUE = 'foo'. Vì vậy, bạn sẽ có được cùng một giá trị khi bạn nhận được SelectedValue bởi

var selectedValue = $(this).val().trim(); 

Tôi chỉ muốn bình luận nhưng tôi không có đủ uy tín: D

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