【问题标题】:onChange function is not definedonChange 函数未定义
【发布时间】:2012-09-19 05:33:44
【问题描述】:

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

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

【问题讨论】:

  • 尝试在单行函数中使用;,因为解释器需要知道所有内容的结束位置。
  • 感谢您的回答,但经过测试我发现它可以使用和不使用分号。

标签: javascript jquery undefined onchange


【解决方案1】:

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

$(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】:

        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)
        

        【讨论】:

          【解决方案5】:
          <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();" />
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2016-06-19
            • 1970-01-01
            • 2022-08-05
            • 2017-12-11
            • 2023-04-05
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多