3 回答

TA貢獻1775條經驗 獲得超11個贊
為了擴展Vincent Ramdhanie的建議,請看做這樣的事情。本質上,您最終擁有了自己的jQuery函數,可以在其他地方重用。
步驟1:創建jQuery函數
(function($) {
$.fn.selected = function(fn) {
return this.each(function() {
var clicknum = 0;
$(this).click(function() {
clicknum++;
if (clicknum == 2) {
clicknum = 0;
fn(this);
}
});
});
}
})(jQuery);
步驟2:確保引用了新創建的jQuery Function的文件以供使用:
<script src="Scripts/jqDropDown.js" type="text/javascript"></script>
步驟3:使用新功能:
$('#MyDropDown').selected(function() {
//Do Whatever...
});
原始信息
使用當前代碼庫,從asp:DropDownList中選擇相同的值將不會觸發更改事件。
您可以嘗試為.blur事件添加另一個jQuery函數。當控件失去焦點時將觸發:
$('#dropdownid').blur(function() {......});
如果模糊功能對您不起作用,我將添加一個刷新按鈕或會影響您嘗試使用的功能的東西。

TA貢獻1772條經驗 獲得超5個贊
嘗試這個:
$(document).ready(function(){
var clicknum = 0;
$("#dropdownid").click(function(){
clicknum++;
if(clicknum == 2){
alert($(this).val());
clicknum = 0;
}
});
});
首先,您要創建一個變量clicknum來跟蹤點擊次數,因為您不希望用戶每次單擊下拉框時都觸發該事件。第二次單擊是用戶所做的選擇。
如果click num恰好是2,則是第二次單擊,因此觸發該事件,并在下次將clicknum重置為0。否則什么都不做。

TA貢獻1712條經驗 獲得超3個贊
當前的許多解決方案在很多情況下都會失效。任何依賴兩次檢查點擊次數的解決方案都非常善變。
要考慮的一些方案:
如果單擊,然后先關閉,然后再打開,它將同時計入點擊和觸發次數。
在firefox中,只需單擊鼠標即可打開菜單并將其拖動到選定的選項,而無需抬起鼠標。
如果您使用鍵盤擊鍵的任意組合,則可能會使點擊計數器不同步或完全錯過更改事件。
您可以使用Alt+ ?(或Spacebar在Chrome和Opera中使用)打開下拉菜單。
當下拉列表具有焦點時,任何箭頭鍵都將更改選擇
打開下拉菜單后,單擊Tab或Enter將進行選擇
這是更全面的擴展:
查看是否已選擇選項的最可靠方法是使用change事件,您可以使用jQuery的.change()處理程序進行處理。
剩下要做的唯一事情就是確定是否再次選擇了原始元素。在任何情況下,
這個問題被問了很多(一,二,三)而沒有一個很好的答案。
最簡單的方法是檢查元素上是否存在clickor keyup事件,但Chrome,IE和safari似乎不支持元素上的事件,即使它們在w3c建議中也是如此option:selectedoption
Select元素內部似乎是一個黑匣子。如果您監聽事件,甚至無法分辨事件發生在哪個元素上,或者列表是否打開。
接下來最好的事情似乎是處理blur事件。這將表明用戶已將注意力集中在下拉列表上(也許看到了列表,也許沒有看到),并決定要保留原始值。要立即繼續處理更改,我們仍將訂閱該change活動。為了確保我們不會重復計算,如果更改事件被引發,我們將設置一個標志,這樣我們就不會觸發兩次:
碼:
(function ($) {
$.fn.selected = function (fn) {
return this.each(function () {
$(this).focus(function () {
this.dataChanged = false;
}).change(function () {
this.dataChanged = true;
fn(this);
}).blur(function (e) {
if (!this.dataChanged) {
fn(this);
}
});
});
};
})(jQuery);
然后像這樣調用:
$("#dropdownid").selected(function (e) {
alert('You selected ' + $(e).val());
});
- 3 回答
- 0 關注
- 1172 瀏覽
相關問題推薦
添加回答
舉報