前言:我确信这非常简单,但我已经搜索了这个网站和 jQuery 网站,但无法找到正确的搜索词来获得答案 - 请原谅我的无知!
我使用 jQuery 的 ajax 函数添加额外的表单字段,然后需要将额外的 ajax 函数应用于这些字段,但似乎无法让 jQuery 动态监控这些表单字段。
如何让 jQuery 使用这些新字段?
$(document).ready(function() {
$('#formField').hide();
$('.lnk').click(function() {
var t = this.id;
$('#formField').show(400);
$('#form').load('loader.php?val=' + t);
});
//This works fine if the field is already present
var name = $('#name');
var email = $('#email');
$('#uid').keyup(function () {
var t = this;
if (this.value != this.lastValue) {
if (this.timer) clearTimeout(this.timer);
this.timer = setTimeout(function () {
$.ajax({
url: 'loader.php',
data: 'action=getUser&uid=' + t.value,
type: 'get',
success: function (j) {
va = j.split("|");
displayname = va[1];
mail = va[2];
name.val(displayname);
email.val(mail);
}
});
}, 200);
this.lastValue = this.value;
}
});
});
因此,如果 存在于基本 html 页面中,则该函数可以工作,但如果它通过 $.load 函数到达,则不会 - 可能是因为 $(document).ready 已经启动。
我确实尝试过:
$(document).ready(function() {
$('#formField').hide();
$('.lnk').click(function() {
var t = this.id;
$('#formField').show(400);
$('#form').load('loader.php?val=' + t);
prepUid();
});
});
function prepUid(){
var name = $('#name');
var email = $('#email');
$('#uid').keyup(function () {
snip...........
但是好像没用...
最佳答案
我认为你很接近。 .load 调用完成后,您需要添加 keyup 处理程序。尝试改变这个...
$('#form').load('loader.php?val=' + t);
prepUid();
对此...
$('#form').load('loader.php?val=' + t, null, prepUid);
关于ajax - jQuery监控AJAX查询创建的表单字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2679567/