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 に答える