2012-06-12 41 views
8

Tôi có trình đơn thả xuống mà tôi muốn kết nối sự kiện JQuery với sự kiện đó nếu ai đó nhấp vào nó nhưng sau đó chọn tùy chọn tương tự đã được chọn.Sự kiện JQuery kích hoạt khi thả xuống được chọn - nhưng giá trị không thay đổi

Tôi có mọi thứ đang chạy bằng sự kiện 'thay đổi' nhưng có những trường hợp hợp lệ để người dùng nhấp vào trình đơn thả xuống và chọn lại tùy chọn tương tự. Nếu điều đó xảy ra tôi cần xử lý sự kiện của tôi để bắn.

Tôi làm cách nào để thực hiện việc này?

+0

chỉ cho chúng ta HTML và jquery của bạn đang xin – Shyju

+0

Tại sao không sử dụng các sự kiện nghe tiếng 'click'? – Blazemonger

Trả lời

8

Hãy thử một cái gì đó như dưới đây,

Sử dụng .click

$(function() { 
    var cc = 0; 
    $('select').click(function() {   
     cc++; 
     if (cc == 2) { 
      $(this).change(); 
      cc = 0; 
     }   
    }).change (function() { 
     $('#result').append('Changed triggered '); 
     cc = -1; 
    });  
}); 

DEMO:http://jsfiddle.net/skram/NAHXP/2/

Hoặc sử dụng .focus.blur

$(function() { 
    var ddVal = ''; 
    $('select').focus(function() { 
     ddVal = $(this).val(); 
    }).blur(function() { 
     if (ddVal == $(this).val()) { 
      $(this).change(); 
     } 
    }).change (function() { 
     $('#result').append('Changed triggered '); 
    });  
}); 

DEMO:http://jsfiddle.net/skram/NAHXP/

+2

Trên cả hai jsfiddles tôi có thể nhấp vào 'test1', sau đó nhấp chuột đi từ trình đơn thả xuống và sau đó nhấp và chọn lại 'test1' - và thay đổi không được kích hoạt. Đây có phải là những gì bạn dự định không? Tôi cần thay đổi để kích hoạt. –

4

Sử dụng lấy nét và làm mờ các sự kiện ...

var selectValue; 
$('select').focus(function(){ 
    selectValue = $(this).val(); 
}).blur(function(){ 
    if (selectValue == $(this).val()) { 
    //nothing change event 
    } 
}) 
2

sử dụng thêm lớp để giải quyết vấn đề này

$("#test").change(function(event){ 
if($(this).find('option:selected').hasClass('actived')) 
    alert('already selected');//write you code here 
else 
    $(this).find('option:selected').addClass('actived'); 

}); 

và tham khảo liên kết này http://jsfiddle.net/muthukumar0705/nARVu/1/

+0

Nếu sự kiện 'thay đổi' không kích hoạt, tính năng này có hoạt động không? Vấn đề của tôi là sự kiện thay đổi không kích hoạt. –

+1

Không có tác dụng không có sự kiện thay đổi. Bạn có thể giải thích thêm chút nữa không. – MMK

+0

Nếu bạn chọn một tùy chọn, sau đó quay lại và chọn tùy chọn * cùng * sau - Tôi vẫn cần sự kiện để kích hoạt. –

3

Đây là giải pháp kích

var oldValue = null; 
$('select').click(function(){ 
    s = $(this); 
    val = s.val(); 
    if (oldValue == null) { 
     oldValue = val; 
    } else { 
     oldValue == s.val() ? alert('nothing changed') : alert('new value'); 
     $(document).unbind('click.valueCheck'); 
     oldValue = null;  
    } 
}) 

DEMO

Đây là giải pháp tiên tiến hơn với tài liệu nhấp chuột mở rộng

DEMO2

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