2013-04-16 61 views
3

我有一個文本框和一個按鈕。 當我點擊按鈕時,它會在文本框中設置一定的值。 我想在文本框的值發生更改時提交頁面。當外部賦值時,更改事件對文本框不起作用

請檢查here

HTML:

<input type='text' class="set" size=50> 
<input type="button" id="click" value="Click" /> 

JQuery的:

$(document).ready(function() { 
    $("input").change(function() { 
     alert("Changed!"); 
    }); 
    $("#click").click(function() { 
     $('.set').val('Why am I not getting the alert saying - Changed! '); 
    }); 
}); 

我能觸發,當我編輯文本框content.I更改事件知道的變化事件在文本框失去焦點時被觸發。當按鈕點擊更改值時,情況並非如此。

我已經看到了在指定的時間間隔(比如說0.1秒)監視文本框更改的答案。

有沒有其他的方式來做到這一點。 謝謝。

編輯 - 1 * 對不起,我不是在原來的職位本身明確 *。

我的要求是每當輸入框內容發生變化時觸發一個事件 - 不一定是通過單擊按鈕。我添加了一個按鈕來解釋問題。 更改可能是由於任何原因。

所以,代碼(按一下按鈕函數內部)

$('.set').val('Hello').change(); 

不會解決問題。 希望我這次清楚。

請建議。

回答

3

使用change()函數設置值後手動觸發事件。

$(document).ready(function() { 
    $("input").change(function() { 
     alert("Changed!"); 
    }); 
    $("#click").click(function() { 
     $('.set').val('Why am I not getting the alert saying - Changed! '); 
     $('.set').change(); //Manual fire of event. 
    }); 
}); 

工作實施例http://jsfiddle.net/RUdu2/

+0

喜凱文,你所提出的解決方案犯規實際上解決我的問題(我的問題描述不清楚我猜)。我編輯了我的問題。由於任何原因,文本框的內容可能會發生變化......不僅僅是因爲按鈕點擊。因此,我需要將一些事件處理程序附加到文本框本身。將.change()附加到buttonclick事件在這裏不會有幫助。有什麼想法嗎 ??謝謝 – Soumya

2

編程改變輸入的值不觸發其改變事件。您就有了自己在同一時間使用.trigger('change')(或只是.change())來做爲改變其值:

$('.set').val('Why am I not getting the alert saying - Changed! ').trigger('change'); 
0

你改變.set值編程,所以不會觸發事件。你必須手動觸發它:

$('.set').val('Why am I not getting the alert saying - Changed! ').change(); 
0
$(document).ready(function() { 
    $("input").change(function() { 
     Submitform();//Function for submitting form 
    }); 
    $("#click").click(function() { 
     $('.set').val('Why am I not getting the alert saying - Changed! '); 
     Submitform();//Function for submitting form 
    }); 
}); 

功能提交表單

function Submitform(){ 
$("#YourformId").submit();//Submits your form 
} 
1

你需要做到這一點,當你設置或更改與文本輸入鏈它的價值.change()太:

$("#click").click(function() { 
    $('.set').val('Why am I not getting the alert saying - Changed! ').change(); 
    }); //-------------------------------------this one here-------------^^^^^^^^^ 

所以每當你這樣設定的輸入值的變化事件將點擊後立即觸發。


可能這將有助於

$("input").on('change keyup', function() { 
    alert("Changed!"); 
}); 
+0

嗨Jai,謝謝你的回覆。但這實際上並不是我的要求。我編輯了我的問題。請看看。謝謝。 – Soumya