2009-07-08 55 views
2

在我的選擇框之一,我有一個onChange =「...」指定... 因爲我想改變任何選擇更改後的其他表單值。如何停止onChange在javascript

但是...在同一個頁面,一些有線情況下,我必須手動設置的值.. ,所以我必須使用一些JavaScript來設置選擇COMBOX的價值,但在這種情況下,我don` t想要onChange事件被解僱...

我該如何走動它?

忘了提及我實際上使用dijit.form.comboBox。對於普通的HTML表單組合框,它不會造成任何問題。 只有我使用dijit組合框,並且我嘗試將該值設置爲其他值,dojo將觸發onChange。

回答

1

你不需要做任何事情。使用Javascript設置值不會觸發您的onchange事件處理程序。

+0

yeah..u是對的。 只是我忘了提及我實際上使用dijit.form.comboBox。對於普通的HTML表單組合框,它不會造成任何問題。只有我使用dijit組合框,並且我嘗試將該值設置爲其他值,dojo將觸發onChange。 – jojo 2009-07-08 04:24:48

1

通常,使用JavaScript設置值不會觸發onchange。如果你使用的是一個奇怪的瀏覽器,那麼你可以刪除onChange(element.onchange = null),改變它的值,然後把它加回去(element.onchange = functionname)。

+0

忘了提及我實際使用dijit.form.comboBox。對於普通的HTML表單組合框,它不會造成任何問題。只有我使用dijit組合框,並且我嘗試將該值設置爲其他值,dojo將觸發onChange。如果與attachHandler /的addEventListener – jojo 2009-07-08 04:25:24

+0

這是行不通的。 – 2011-02-24 17:15:43

0

僅供參考,此答案不完全正確。確實,只需設置該值不會觸發onChange事件,但只要控件失去焦點,就會檢測到更改,並且會觸發onChange。

所以推遲onChange與預防onChange並不是一回事 - 這就是我需要做的!

我可以暫時刪除事件,模糊和重新調整字段,然後恢復事件,但這是一個醜陋的黑客。像jQuery這樣的動態增加的事件使其變得複雜。所以我真正想要將「專注價值」設置爲「新價值」,但一直未能找到。我可以嘗試設置defaultValue,但這會阻止正確的form.reset()。

9

如果您正在使用Dijit,那麼您可以在set()方法的末尾傳遞一個額外的false標誌,以防止小部件觸發onChange事件。

例如:

dijit.byId(myComboBox).set("value","Choose an option...",false); 
+0

加入事件有關API 1.6不工作的Cuz不可用第三個參數 感謝您的快速回答 – AsadYarKhan 2013-04-30 10:19:55