2013-03-13 46 views
2

這裏改變的代碼:jQuery的:。對(「輸入」)不點火時的輸入值由另一個功能

$("input[type='text']").on('input', function() { ...stuff here... }); //first function 

$('input[type="text"]').click(function() { //second function 
    $('#keyboard').show(); 
    $('#keyboard .letter').click(function() { 
    var currentValue = $('input[type="text"]').val(); 
    alert(currentValue); 
    $('input[type="text"]').val(currentValue + $(this).text()); 
    }); 
}); 

簡短的版本是,當我在這個文本輸入,頂部功能火災類型。在第二個功能中,我會出現一個鍵盤,並根據用戶點擊更改輸入的值。但是,當通過第二個函數改變輸入值時,第一個函數不會觸發。有任何想法嗎?非常感激。

回答

12
$("input[type='text']").trigger('input'); 

把它放在你的第二個函數中。 僅僅使用javascript設置文本框的值不會觸發輸入事件,因此您的輸入事件處理程序不會觸發。在這種情況下,您需要手動觸發該事件處理程序。

注意:您應該而不是正在使用輸入事件處理程序。看到這個鏈接,看看糟糕的瀏覽器兼容性。 https://developer.mozilla.org/en-US/docs/DOM/window.oninput。相反,您可能會更好地使用更改事件。

+0

同意。這應該調用未輸入的更改事件。 – iAmClownShoe 2013-03-13 15:25:08

+2

我甚至不知道那裏是* oninput事件! – 2013-03-13 15:25:23

+0

我正在爲Chrome打包應用程序,所以我只關心webkit。 '.on('input')'在那裏工作。雖然我確實將它改爲'.change(),但它不起作用。不知道爲什麼。感謝你的回答。 – preahkumpii 2013-03-13 15:28:50