2012-11-07 72 views
1

我知道在jQuery中有change事件處理與select類型的輸入相關聯。但我想知道用戶是否在select元素中選擇了另一個值!所以我不想在用戶選擇一個新的元素時運行代碼,但我想知道用戶是否選擇了不同的值! 實際上,我的表單中有兩個選擇元素,我只想在兩個select元素髮生變化時纔會啓動ajax。那麼如何知道這兩個要素已經發生了變化?如何知道jQuery的「選擇」輸入值已更改?

+4

問題不是很清楚,你能解釋一下嗎? – freebird

回答

2

可以專門通過設置在你的JavaScript文件結合聽你所選擇的元素上的改變事件。

雖然這隻能解決一半的問題。您想知道何時選擇了不同的元素。

您可以通過創建每次觸發事件時更新的跟蹤變量來實現此目的。

首先,爲您的跟蹤變量提供一個永遠不會出現在下拉列表中的值。

// Hugely contrived! Don't ship to production! 
var trackSelect = "I am extremely unlikely to be present"; 

然後,您需要設置一個函數來處理更改事件。

事情就這麼簡單: -

var checkChange = function() { 
    // If current value different from last tracked value 
    if (trackSelect != $('#yourDD').val()) 
    { 
    // Do work associated with an actual change! 
    } 

    // Record current value in tracking variable 
    trackSelect = $('#yourDD').val(); 
} 

最後,你需要的document.ready接線的事件了。

$(document).ready(function() { 
    $('#yourDD').bind('change', function (e) { checkChange() }); 
}); 
2

首先,您可以使用select事件處理程序(設置某些標誌的值)。這是如何工作的:

$('#select').change(function() { 
    alert($(this).val()); 
});​ 

演示:http://jsfiddle.net/dXmsD/

或者你可以在一些地方保存原來的值,然後檢查:

$(document).ready(function() { 
    var val = $('#select').val();  
    ... 
    // in some event handler 
    if ($('#select').val() != val) ... 
    ... 
}); 
+1

你讀過這個問題隊友嗎? – freebird

1

可以保存一些在頁面加載值隱藏的領域。

$(document).ready(function(){ 
$('hiddenFieldId').val($('selectBoxId').val()); 
then on change you can grab the value of select: 
}); 
    $('selectBoxId').change(function(){ 
    var valChng = $(this).val(); 
    // now match the value with hidden field 
    if(valChng == $('hiddenFieldId').val()){ 
    } 
    }); 
+0

好主意,但我的框架不允許這樣做! :) – pheromix

+0

哪個框架不允許你有隱藏的領域? –

+0

我們的項目像MVC框架一樣分爲「行爲」,「模型」,「頁面」和「視圖」。所以.... – pheromix

0
$("select").change(function() { 
     var str = ""; 
     $("select option:selected").each(function() { 
      str += $(this).text() + " "; 
      }); 
     $("div").text(str); 
    }) 
    .change(); 

http://docs.jquery.com/Events/change

1

首先您需要存儲選定選項的前一個值,然後您應該檢查新選定的值是否與存儲值不同。

查看sample

$(document).ready(function() { 
    var lastValue, selectedValue; 
    $('#select').change(function() { 
     selectedValue = $(this).find(':selected').val(); 
     if(selectedValue == lastValue) { 
      alert('the value is the same'); 
     }    
     else { 
      alert('the value has changed'); 
      lastValue = selectedValue; 
     } 
    }); 
});​ 
+0

這是真的嗎?如果我沒有錯,lastValue和selectedValue將永遠不會相同,否則其他部分將被解僱。因爲它發生在你的SAMPLE – Meraj

+0

是的,它實際上似乎在這裏工作http://jsfiddle.net/P9B8u/,你看到選擇輸入的第一個和最後一個元素值是相同的。如果在第一個元素處於活動狀態時選擇了最後一個元素,則selectedValue和lastValue將相等。 – halilb

相關問題