我正在構建一個ASP.NET MVC網站,我需要一個標記編輯器,類似於Stack Overflow上使用的標記編輯器。我已經擡起頭來如何做到與jQuery UI的自動完成必要的,但我已經遇到一個問題:當我將這個腳本放在外部.js
文件,它不執行。放置在外部腳本文件中時Javascript不會執行
這裏是我的test.html
:
<html>
<head>
<meta charset="utf-8">
<title>Test</title>
<script src="http://jqueryui.com/jquery-1.4.2.js"></script>
<script src="http://jqueryui.com/ui/jquery.ui.core.js"></script>
<script src="http://jqueryui.com/ui/jquery.ui.widget.js"></script>
<script src="http://jqueryui.com/ui/jquery.ui.position.js"></script>
<script src="http://jqueryui.com/ui/jquery.ui.autocomplete.js"></script>
<script src="jquery.tagautocomplete.js"></script>
<script>
$(function() { bindAutoTagComplete('#birds'); })
</script>
</head>
<body>
<label for="birds">Birds: </label>
<input id="birds" size="50" />
</body>
</html>
這裏的jquery.tagautocomplete.js
:
function bindAutoTagComplete(item, otherRootDomain)
{
function split(val) {
return val.split(/ \s*/);
}
function extractLast(term) {
return split(term).pop();
}
$(item).autocomplete({
source: function(request, response) {
$.getJSON('http://jqueryui.com/demos/autocomplete/search.php', {
term: extractLast(request.term)
}, response);
},
search: function() {
// custom minLength
var term = extractLast(this.value);
if (term.length < 2) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function(event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(" ");
return false;
}
});
}
你認爲可能會導致這個問題?我可能會錯過.js
文件中的一些合攏禁忌/大括號...
在此先感謝!
你確定該文件的被包括在內?嘗試將alert(「test」)'放在文件中,看看它是否觸發。 – 2010-10-09 17:36:50
@尼克好吧,會在一秒鐘內測試。我應該把它放在'function bindAutoTagComplete(iteme,otherRootDomain){'或之前嗎? **更新:**我已經嘗試了兩種方式;只有在函數聲明工作之前。這意味着該文件正在加載,但由於某種原因,我的功能沒有執行。是什麼賦予了?謝謝你的幫助。 – 2010-10-09 17:37:58
@Maxim - 在文件的最頂端工作...在基地的任何地方是有效的。 – 2010-10-09 17:38:49