2011-10-10 40 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