2016-07-27 166 views
0

可以防止觸發onchange事件嗎? 我想在任何情況下防止它(如失去對輸入的重點),並只有當我手動這樣做時觸發它:防止在輸入上觸發onchange

$('#my_input_id').val('a value').change();

+0

爲什麼不能代替觸發自定義事件? ??或者只是在需要時調用一個函數?無論如何,這聽起來像一個[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) –

+0

當一個javascript onchange事件被觸發時,一個鏈接的基於Ajax的函數我的控制器提交數據。我想防止這種情況發生,並控制何時調用我的控制器中的函數。請注意,只有在調用javascript onchange時才調用該函數。 –

+0

因此,如果您不想發送有關輸入更改的數據,爲何首先將此邏輯設置爲更改事件處理程序?也許我錯過了一些東西,但是這真的不清楚你在說什麼 –

回答

0

只需將您的事件中設置此:

if (en==1){ 
//code here 
en=0; 
} 

,只是設置連接之前手動調用

en=1; 
$('#my_input_id').val('a value').change() 

我們設置到底恩回零的功能,所以我們不小心重新啓用它。行動

0

如果我理解你的問題,這裏是我的解決方案:

HTML:

<input type="text" id="inp"> 
<input type="button" id="btn" value="trigger change"> 

JQuery的:

$("#inp").change(function(e, data) { 
    if (data) { 
    console.log("change by trigger"); 
    } else { 
    console.log("normal change"); 
    } 
}) 

$("#btn").click(function() { 
    $("#inp").val("12").trigger("change", true); 
}) 

LIVE DEMO JSFIDDLE

+0

這仍會觸發「正常更改」 。儘管有或沒有功能,我不想通過更改功能進入。 –

+1

@MoroianuAlexandru你在找'e.preventDefault()'嗎? –

+0

是的,但我不知道如何使用它。我試圖阻止默認()onfocusout,但它仍然觸發onchange。 –