2013-05-29 100 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

相关问题