2010-10-09 74 views
0

我正在構建一個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文件中的一些合攏禁忌/大括號...

在此先感謝!

+0

你確定該文件的被包括在內?嘗試將alert(「test」)'放在文件中,看看它是否觸發。 – 2010-10-09 17:36:50

+0

@尼克好吧,會在一秒鐘內測試。我應該把它放在'function bindAutoTagComplete(iteme,otherRootDomain){'或之前嗎? **更新:**我已經嘗試了兩種方式;只有在函數聲明工作之前。這意味着該文件正在加載,但由於某種原因,我的功能沒有執行。是什麼賦予了?謝謝你的幫助。 – 2010-10-09 17:37:58

+0

@Maxim - 在文件的最頂端工作...在基地的任何地方是有效的。 – 2010-10-09 17:38:49

回答

1

您需要的後一頁準備附上事件。它當前運行#鳥不存在。

喜歡的東西

<script> 
$(document).ready(function(){ bindAutoTagComplete('#birds'); }); 

</script> 
+1

這是不正確,'$(函數(){'是一個快捷方式'$(文件)。就緒(函數(){',所以他已經催款這對'document.ready'。 – 2010-10-09 18:11:34

+0

這似乎解決問題!非常感謝 – 2010-10-09 18:12:46

+0

@Nick對我的作品 – 2010-10-09 18:13:24