2011-07-18 60 views
0

在JQuerys的頁面上(http://api.jquery.com/submit/)我正在嘗試一個例子。這是純粹的複製粘貼,但(除了,HTML,身體等)仍然無法正常工作。什麼是問題:JavaScript函數未觸發

<body> 
<html> 
<head> 
<script> 

$('#target').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
}); 

</script> 

</head> 

<form id="target" action="get_input_values.html"> 
    <input type="text" value="Hello there" /> 
    <input type="submit" value="Go" /> 
</form> 
<div id="other"> 
    Trigger the handler 
</div> 

</body> 
</html> 

我只是想有一個函數,可以在我提交表單時觸發。下一步,我需要從輸入字段獲取值。

在此先感謝!

回答

1

一旦表單加載到頁面上,您就需要將提交事件附加到表單上。

要做到這一點,你可以換一個$(document).ready()整個事情:

$(document).ready(function(){ 
    $('#target').submit(function() { 
     alert('Handler for .submit() called.'); 
     return false; 
    }); 
}); 

這基本上是說,一旦該文件已完成加載,去尋找形式和一個提交事件附加到它。試圖按照您所做的方式來執行此操作,運行時頁面上的表單在Javascript嘗試查找時無法加載。

這是你的代碼的工作示例:http://jsfiddle.net/MmMa8/

+0

謝謝,這是問題的一部分。 – Nicsoft

4

您還沒有包裹你的腳本在

$(document).ready(function() { 
    ... 
}); 

塊,所以運行代碼,當元素#target無法找到。

+0

...這是必要的,因爲綁定'submit'處理程序的代碼在綁定元素的定義之前。反轉訂單(以便'

0

您的HTML錯誤。應依次爲:

<html> 
<head> 
</head> 
<body> 
</body> 
</html> 

但JavaScript是不工作,因爲你必須把它裏面

$(document).ready(function(){ 
//your code 
}); 

,另外你必須包括jQuery的開頭:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
0

add this

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js" type="text/javascript"></script> 

,敷內的document.ready或像下面

<script> 
$(function(){ 
$('#target').submit(function() { 
alert('Handler for .submit() called.'); 
return false; 
}); 
}); 

</script> 
0

儘量把<script>...</script>到底。或包裹的submit功能上ready()功能,如:

$(document).ready(function(){ 
    $('#target').submit(function() { 
    alert('Handler for .submit() called.'); 
    return false; 
    }); 
}); 

這種方式被加載整個頁面後submit將被綁定到表單。