2012-02-25 85 views
1

我想觸發使用jQuery選擇下拉列表的onChange事件。我使用onChange事件連接了函數:$(element2).change(populateRelatedDropdowns);當我手動更改選擇控件的值時,它工作正常。但是當我想通過使用:$(entydd).trigger('change');來觸發onChange時,它根本不起作用。jQuery強制觸發onChange選擇下拉列表

請幫助我。謝謝。

代碼與選擇下拉連線了事件:

var element2 = document.createElement("select"); 
$(element2).change(populateAttrsDropdowns); 


function populateAttrsDropdowns() 
{ 
//does something 
} 

高達這是光滑的。當我手動更改下拉值時工作。

現在我有一個要求,當我手動設置下拉選項的值,並希望觸發onChange甚至。下面的代碼(在不同的功能):

for (i = 0; i < customArray.length; i++) 
{ 
    $('#btnAdd').trigger('click'); 
    var entydd = (i+1) + ".enty"; //this is the name of my dropdowns..there are a couple 
    document.getElementById(entydd).value = customArray[i].custom_value; 
    $(entydd).trigger('change'); 
} 

希望這額外的代碼部分幫助。

+1

請表明是給你的代碼問題在其背景下。 – mindandmedia 2012-02-25 10:31:24

+1

'$(element2).trigger('change');'not'$(entydd).trigger('change');' – mgraph 2012-02-25 10:32:44

+0

代碼太大而無法粘貼。我正在編輯我的第一篇文章,以儘可能多地包含相關的代碼。 – Anupam 2012-02-25 10:34:01

回答

0

嘗試重寫此:

for (i = 0; i < customArray.length; i++) 
{ 
    var mySelect = $((i+1) + ".enty"); 
    var myVal = customArray[i].custom_value; 
    mySelect.val(myVal); 
} 

我沒有測試過,但(設置在選擇的值),就可能觸發這種改變情況下,如果你通過jQuery做到這一點,而不是到純js。

,如果不觸發這種改變,你可以添加第二個電話:myChanged(mySelect,設爲myVal)

+1

據我所知,'.val()'不會觸發改變evenet。 '.val()'似乎不適用於我的代碼,這就是爲什麼我用'document.getElementById()。value = myvalue'來描述我的代碼。 – Anupam 2012-02-25 10:57:51

+0

也許你應該爲我們創建一個小提琴...... - > http://jsfiddle.net/ – mindandmedia 2012-02-25 10:59:53

+0

我該怎麼做?對不起,我是這個新手。 – Anupam 2012-02-25 11:04:55

2

我覺得應該是

$('#'+entydd).trigger('change'); 
+0

之前嘗試過這一點,沒有工作。 – Anupam 2012-02-25 11:14:58

+0

無論你的錯誤是什麼,但你必須使用$('#'+ entydd)。要使用jquery通過id選擇一個元素,你必須使用#。在你的代碼var entydd =(i + 1)+「.enty」中沒有帶有id的散列。 – 2012-02-25 11:27:57

+0

我已經用#嘗試過,不起作用。 – Anupam 2012-02-25 12:12:11