21

这一定很简单。我搜索了互联网,只发现语法错误是导致此问题的原因,但我找不到语法错误。

这是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 错误,表示该函数未定义。我真的很难过。我拼错了“嗨”吗?

4

5 回答 5

27

hi函数仅在ready事件处理程序的范围内。将其移到事件处理程序之外,或在其中处理绑定(并从标记中删除内联事件处理程序属性):

$(document).ready(function(){
    function hi(){
        alert('hi');
    }
    $("#cep").on("change", hi);
});
于 2012-09-27T12:22:30.973 回答
6

hi功能仅在ready块中定义。在外面,它已经不存在了。

您不需要将函数定义包装在 中.ready(),因此只需将其删除。或者,像这样定义函数:

window.hi = function() {...}
于 2012-09-27T12:22:51.210 回答
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>
于 2012-09-27T12:24:51.183 回答
3

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)
于 2012-09-27T12:25:25.410 回答
3
<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();" />
于 2012-09-27T12:29:26.253 回答