функция 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>