Я создаю сайт 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 ")' в файл и посмотреть, если он срабатывает. –
@ Ник OK, будет проверяться через секунду. Должен ли я помещать его после 'function bindAutoTagComplete (iteme, otherRootDomain) {' или раньше? ** ОБНОВЛЕНИЕ: ** Я пробовал в обоих направлениях; только поместив его перед тем, как декларация функции сработала. Это означает, что файл загружается, но по какой-то причине моя функция не выполняется. Что дает? Спасибо за вашу помощь. –
@Maxim - в самом верху файла работает ... в любом месте базы действует. –