У меня простой HTML. Я использую JQuery для целей AJAX. Теперь я хочу поместить свою функцию javascript в отдельный файл javascript. Какой у этого синтаксис? Например, в настоящее время мой раздел сценария в HTML выглядит примерно так:
<script>
<script type = "text/javascript" src = "scripts/scripts.js"></script>
<script type = "text/javascript" src = "scripts/jquery.js"></script>
<script type = "text/javascript" language = "javascript">
$(document).ready(function() {
$("#SubmitForm").click(Submit());
});
</script>
Но хочу поставить функцию
function() {
$("#SubmitForm").click(Submit());
})
в файле scripts.js. Могу ли я присвоить этой функции имя и ссылаться на нее?
Обновлено: У меня все еще есть небольшая проблема: я изменил код на
<script type = "text/javascript" language = "javascript">
$(document).ready(function() {
$("#SubmitForm").click(submitMe);
});
</script>
а в отдельном файле js у меня есть следующий код:
var submitMe = function(){
alert('clicked23!');
//$('#Testing').html('news');
};
Вот часть тела:
<body>
welcome
<form id = "SubmitForm" action = "/showcontent" method = "POST">
<input type = "file" name = "vsprojFiles" />
<br/>
<input type = "submit" id = "SubmitButton"/>
</form>
<div id = "Testing">
hi
</div>
</body>
Тем не менее, он все еще не работает, я что-нибудь пропустил?
$('head').append('<script type = "text/javascript" src = "scripts/scripts.js"/>')
Да, это не проблема, просто сохраните функцию как переменную, как и любую другую.
var myfunc = function(){
// Do some stuff
}
Затем вы можете использовать следующий синтаксис, чтобы запустить его в своей функции инициализации jQuery:
$(document).ready(myfunc);
Существует также сокращенный синтаксис для кода, который запускается в готовом документе, который просто передает функцию в jQuery:
$(myfunc);
Переместите тег scripts.js script
под тегом jQuery script
, а затем просто переместите весь этот встроенный блок сценария в scripts.js. Поскольку jQuery уже будет создан к моменту загрузки scripts.js, Javascript будет просто выполняться встроенным способом так же, как и в данный момент.
Также в отдельной заметке вам необходимо изменить
$("#SubmitForm").click(Submit());
к
$("#SubmitForm").click(Submit);
Вам не нужны круглые скобки, потому что вы не выполняете функцию в этот момент, а просто сообщаете обработчику события щелчка, что это имя функции, которую вы хотите выполнить при возникновении события.
И еще один совет: вы можете заменить $(document).ready(
на $(
, то есть:
$(function() {
$("#SubmitForm").click(Submit);
});
И $
, и document.ready
могут быть включены в любом месте страницы (или во внешних файлах), и пока jQuery.js находится в области видимости, они будут запускаться одновременно (после загрузки DOM) - вам не о чем беспокоиться о том, что это последний кусок кода, который нужно запустить. Вот почему вы можете переместить все это в scripts.js вместо того, чтобы назначать имя функции и ссылаться на нее из встроенного скрипта.
Для записи, если вы хотите ссылаться на функцию по имени, просто определите ее как переменную:
var func = function() {
$("#SubmitForm").click(Submit);
};
$(func);
Как я уже сказал, это, возможно, несколько излишне в вашей ситуации, вы можете просто переместить все это в scripts.js (если, конечно, это не что-то большее, чем вы упомянули в своем вопросе.
Редактировать (чтобы иметь дело с редактированием вопроса): Похоже, вы имеете дело не с тем обработчиком событий. Вы пытаетесь назначить функцию обработчику события щелчка для формы, тогда как вы действительно хотите назначить ее обработчику для кнопки отправки. Поэтому вы должны использовать селектор '#SubmitButton', то есть:
$("#SubmitButton").click(Submit);
Почему бы не свалить
$(document).ready(function() {
$("#SubmitForm").click(Submit);
});
во внешнем файле? Он будет работать как сейчас, потому что вы можете складывать события onDomReady.
Тогда ваш html должен быть таким (обратите внимание, что первый <script>
плохой):
<script type = "text/javascript" src = "scripts/scripts.js"></script>
<script type = "text/javascript" src = "scripts/jquery.js"></script>
<script type = "text/javascript" src = "scripts/scripts.js"></script>
Можете ли вы опубликовать свою разметку HTML?