2013-03-13 48 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