2011-10-10 43 views
0

我想使用jquery在表单输入中设置一些默认文本。文本将是动态的,所以我不能只在html中设置它。我想让jquery等待表单加载。JQuery的加载()和延迟()函数不工作

延迟功能设置文本,但不会延迟。这是瞬间的。

加载函数似乎没有执行。

HTML代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Testinput</title> 
<script type="text/javascript" src="jquery.min.js"></script> 
<script type="text/javascript" src="testinput.js"></script> 
</head> 

<body> 
<form> 
    <input size="20" name="thing" /> 
    <input type="image" src="" name="submit" value="go" /> 
</form> 

</body> 
</html> 

jQuery代码:

$(document).ready(function(){ 

var $input = $('input[name="thing"]'); 
$input.val(""); 

var query = "orange"; 

//$input.delay(10000).val(query); // No delay! 

$input.load(function(){ 
// Nothing happens!! 
alert("form loaded"); 
$input.val(query); 
}); 

}); 

都尝试jQuery的1.6.4.min.js和jQuery的1.4.min.js无济于事。


编辑: 我无法回信,对堆栈溢出的JavaScript似乎并没有为我工作正常。我得到“堆栈溢出需要来自另一个域的外部JavaScript,它被阻止或无法加载”。

我已经得到了使用Clive的答案工作的延迟功能,但有没有办法让jquery等待表单在运行代码之前先加载?

+0

@shafty什么工作:关于你的编辑:你已经在做了...'$(文件).ready'将只运行在DOM已准备就绪,此时表单将在DOM树中完全加载并可用。 – Clive

回答

3

delay()涉及到队列,不是任意的功能,所以你需要使用setTimeout()代替:

window.setTimeout(function() { 
    var $input = $('input[name="thing"]'); 
    var query = 'orange'; 
    $input.val(query); 
}, 10000); 

而且load()是一个函数:从服务器

负载数据和返回的HTML放入匹配元素。

它不会为你正在试图做

+0

有没有办法让jquery在运行代码之前先等待表单先加载?延迟功能起作用,但并不总是实用的解决方案。 – shafty