2010-01-04 115 views
1

我有一个使用jquery执行的ajax脚本,当输入文本字段使用keyup更改。这部分工作正常。但是,当表单自动加载此输入文本字段中的某些文本时,我也希望触发相同的键入事件。jquery触发一个事件

我自动加载表单文本字段通过使用PHP填充表单从URL(获取请求)。

我的HTML代码:

<input id="code" name="code" type="text" /> 

我的JS:

$(document).ready(function() { 
    // doesn't work 
    // i want to execute the code in the function specified within $('#code').keyup(function() {} below. nothing happens here. 
    if ($('#code').val() != '') { 
    $('#code').trigger('keyup'); 
    } 

    // works fine 
    $('#code').keyup(function() { 
    // function code 
    } 
} 

不知道如果我这样做的权利。如果有人能帮我解决这个问题,我将不胜感激。谢谢! :)

回答

5

需要触发keyup(或者与$('#code').trigger('keyup')$('#code').keyup()),之后绑定事件处理程序,而不是之前。

$(document).ready(function() { 
    $('#code').keyup(function() { 
     // function code 
    } 

    if ($('#code').val() != '') { 
     $('#code').trigger('keyup'); 
    } 
} 
+0

非常感谢!我几分钟前才意识到这种情况。再次来到网站,说我已经解决了,但意识到你已经看到了问题。再次感谢!我花了3个小时试图弄清楚这一点。 :S – Lyon

1

您是否尝试过只需拨打.keyup()而不是.trigger('keyup')

另一件事你可以做的是抽象的,你要调用到另一个函数和调用,而不是触发点击的代码:

$('#code').keyup(myFunction); 
+0

嗨贾森,这正是我想要做的,通过将代码移入一个函数并从那里调用它。不用说,我遇到了其他问题,比如我如何确保函数中的“this”指的是$('#code')。在函数中声明var code = $('#code')是否可以解决该问题?不管怎么说,还是要谢谢你! =) – Lyon

+0

对不起,杰森,会指定你的答案是正确的,但K Prime对于像我这样的初学者来说更加清晰。 :) 谢谢! – Lyon

+0

没关系,他是对的。真高兴你做到了! – Jason