前言:我相信這非常簡單,但是我已經搜索了該網站& jQuery網站並且無法找出正確的搜索詞來獲得答案 - 請原諒我的無知!由AJAX查詢創建的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(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...........
但它似乎沒有工作...
現貨!非常感謝。 – 2010-04-21 00:38:32
我認爲這個解決方案有效。我已經在live()函數之前多次使用舊的jQuery版本。使用live()函數,您不必擔心順序,並且它有助於將事物分開。只是一個想法... – schmidty 2010-04-21 00:41:56
也許我錯過了一些東西。在代碼中,點擊處理程序被添加到具有.lnk類的元素。通過這些AJAX請求是否將.lnk元素添加到DOM?如果是這樣,你一定要爲這些元素使用.live()。您也可以使用.live(「keyup」,...)作爲輸入字段。我個人傾向於避免使用.live(),除非它絕對必要。只有我... – 2010-04-21 01:04:32