функция onChange не определена
это должно быть что-то простое. Я искал в интернете и нашел только синтаксические ошибки как причина этой проблемы, но я не могу найти синтаксическую ошибку.
вот javascript:
<script type="text/javascript" src="http://localhost/acrilart/javascript/jquery-1.6.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
function hi(){
alert('hi');
}
hi();
});
</script>
и HTML:
<input type="text" name="cep" value="" id="cep" class="required cep field"
onChange="hi()" />
на pageload функция hi называется, как ожидалось, но мой onChange событие вызывает ошибку Firebug, говоря, что функция не определена. Я действительно в тупике. Я mispell "привет"?
5 ответов
на hi функция находится только в области внутри ready обработчик событий. Переместите его за пределы обработчика событий или обработайте привязку внутри него (и удалите атрибут встроенного обработчика событий из разметки):
$(document).ready(function(){
function hi(){
alert('hi');
}
$("#cep").on("change", hi);
});
на hi функция определяется только в ready блок. Снаружи он больше не существует.
вам не нужно помещать определения функций внутри .ready(), Так что просто удалить его. В качестве альтернативы определите функцию следующим образом:
window.hi = function() {...}
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
function hi(){
alert('hi');
}
</script>
<input type="text" name="cep" value="" id="cep" class="required cep field" onKeyPress="javascript:hi();" />
onchange срабатывает только тогда, когда контроль размыто. Попробуй!-Вместо -4-->.
$("#cep").on("change", function() {
alert(1);
});
или
<input type="text" name="cep" value="" id="cep" class="required cep field"
onkeypress="hi()" />
используйте следующие события вместо onchange:
- onkeyup(event)
- onkeydown(event)
- onkeypress(event)
в вашем блоке кода:
<script type="text/javascript">
$(document).ready(function(){
function hi(){
alert('hi');
}
hi();
});
</script>
hi не является глобальной функцией. Вы можете получить доступ к нему только внутри области вашего function(){...}, а не извне.
поскольку вы используете jQuery, вы можете изменить способ привязки своей функции к onChange событие. Вместо того, чтобы вызывать его из тега html, вы можете написать:
<script type="text/javascript">
$(document).ready(function(){
function hi(){
alert('hi');
}
hi();
$('#cep').on( 'change', function(){ hi(); } );
});
</script>