2013-05-29 60 views
2

我有一個輸入文本,需要在文本(值)更改時檢測。 該值可以通過兩種方式更改:如何檢測輸入文本中的值何時被腳本更改?

  1. 允許用戶在其中寫入。
  2. 用戶點擊一個按鈕,運行一個jQuery事件並用 結果填充它。

對於我使用keyup解決的項目1,但對於項目2我不知道如何檢測文本何時更改。 我嘗試change()但不起作用。

+1

爲什麼不直接調用額外的代碼後填充輸入?你可以使用'$(「#id」)。trigger(「keyup」);' – Archer

+1

他可能使用了一些庫/小部件... –

+0

你可以更具體一點,腳本響應什麼樣的(jQuery)事件, _result_是否已創建並同步填充? –

回答

1

您可以在填寫輸入的函數中使用.trigger()

$("#idOfButton").click(function() { 
    //do some stuff 
    //fill input 
    $("#edit").val("new stuff!").triggerHandler("keyup"); //<--Trigger keyup event 
}); 

演示:http://jsfiddle.net/Q8fCa/1

+0

'triggerHandler'不能更好地工作,因爲你不想讓元素知道函數調用? http://api.jquery.com/triggerHandler/ – Qpirate

+0

@Qpirate - 感謝提示,編輯帖子和小提琴。 – tymeJV

0

爲item2和item1鍵入處理程序添加事件處理程序change(),觸發item2 change()事件。簡單的那樣...

0

「運行jQuery的事件,並用結果填充它。」

你可以從你的jquery事件調用另一個函數。

$('sel').click(function(){ 
textedited(); // call your new function. 
}); 
0

您可以創建,檢查是否輸入字段的值在每一個場合(用戶輸入或點擊按鈕)發生了變化的時間間隔:

var oldValue = $('#field').val(); 
var newValue = oldValue; 

var checkInputFieldInterval = window.setInterval(function() { 
    newValue = $('#field').val(); 
    if (newValue !== oldValue) { 
     // VALUE CHANGED, DO STUFF 
     oldValue = newValue; 
    } 
}, 100); 

注意的「100」是區間以毫秒爲單位。您可以在此頁面找到有關setInterval()方法的詳細信息http://www.w3schools.com/jsref/met_win_setinterval.asp

0

你可以做...

$('.name').on('keyup', function(){ 
    /* I'll run when the button is clicked or there's a keyup event. */ 
}) 

$('button').on('click', function(){ 
    $('.name').val('Bill').trigger('keyup'); 
}) 

這裏有一個快速演示:http://jsbin.com/uteceb/1/edit

相關問題