这必须简单。我搜索了互联网,发现语法错误只是造成这个问题的原因,但我找不到语法错误。
这是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()" />
在页面加载时,函数hi
按预期调用,但我的onChange
事件导致Firebug错误,说明函数未定义。我真的很难过。我错了'嗨'吗?
答案 0 :(得分:20)
hi
函数仅在ready
事件处理程序的范围内。将其移出事件处理程序,或处理其中的绑定(并从标记中删除内联事件处理程序属性):
$(document).ready(function(){
function hi(){
alert('hi');
}
$("#cep").on("change", hi);
});
答案 1 :(得分:5)
hi
功能仅在ready
块中定义。在外面,它不再存在。
您无需在.ready()
中包装函数定义,因此请将其删除。或者,定义如下函数:
window.hi = function() {...}
答案 2 :(得分:2)
在您的代码块中:
<script type="text/javascript">
$(document).ready(function(){
function hi(){
alert('hi');
}
hi();
});
</script>
hi
不是全局函数。您只能在function(){...}
的范围内访问它,而不能从外部访问它。
由于您使用的是jQuery,因此可以更改将函数绑定到onChange
事件的方式。您可以写下:
<script type="text/javascript">
$(document).ready(function(){
function hi(){
alert('hi');
}
hi();
$('#cep').on( 'change', function(){ hi(); } );
});
</script>
答案 3 :(得分:2)
<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();" />
答案 4 :(得分:1)
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)