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, говоря, что функция не определена. Я действительно в тупике. Я ошибался "привет"?
Ответы
Ответ 1
Функция hi
доступна только в области внутри обработчика события ready
. Переместите его за пределы обработчика событий или обработайте привязку внутри (и удалите атрибут обработчика события inline из разметки):
$(document).ready(function(){
function hi(){
alert('hi');
}
$("#cep").on("change", hi);
});
Ответ 2
Функция hi
определена только в блоке ready
. Снаружи он больше не существует.
Вам не нужно обертывать определения функций в .ready()
, поэтому просто удалите его. В качестве альтернативы определите функцию следующим образом:
window.hi = function() {...}
Ответ 3
В вашем блоке кода:
<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>
Ответ 4
<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();" />
Ответ 5
onchange
запускается только тогда, когда элемент управления размыт. Вместо этого попробуйте onkeypress
.
$("#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)
Ответ 6
Попробуйте так, это может уменьшить ваши усилия.
<select (change) = "myFunc($event)">
<option>option</option>
</select>