亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

每次使用jQuery選擇DropDownList項目時都會觸發事件

每次使用jQuery選擇DropDownList項目時都會觸發事件

慕的地8271018 2019-11-29 14:25:50
我有一個下拉列表: <asp:DropDownList id="dropdownid" runat="server" class=blah"/>在我的jQuery中,我分配更改事件是這樣的:$('#dropdownid').change(function() {......});現在,當我從下拉列表中選擇不同的值時,此方法有效,但是,假設我要再次選擇相同的值。(因為我想使用相同的值進行另一個調用)因此,當我再次選擇它時(不更改值),只需單擊下拉菜單中的選定值并再次“選擇”它,就不會觸發任何事件。我必須分配給jquery中的另一個事件嗎?有什么解決方法?jQuery HTML-選擇
查看完整描述

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() {......});

如果模糊功能對您不起作用,我將添加一個刷新按鈕或會影響您嘗試使用的功能的東西。


查看完整回答
反對 回復 2019-11-29
?
月關寶盒

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。否則什么都不做。


查看完整回答
反對 回復 2019-11-29
?
交互式愛情

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());

});


查看完整回答
反對 回復 2019-11-29
  • 3 回答
  • 0 關注
  • 1172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號