0

私はここ(そして一般的にWeb開発)に不慣れで、指定されたイベントで関数が実行されない理由を理解しようとしています。

私はこの投稿を見つけました、そしてそれは私が望むものとまったく同じように見えます、しかしこれでさえうまくいきませんでした:

html <input type = "text"/>onchangeイベントが機能しない

どんな助けでもいただければ幸いです。私の正確なコードは次のとおりです。いくつかのテキスト入力フィールド(実際には検索ボックス)があり、最終的にはユーザーがテキストフィールドにデータを入力するときにチェックボックスをオンにしたいのですが、関数を呼び出さないようです。

上記の投稿を読みながら、いくつかのバリエーションを試しました。これが私が試したいくつかの入力フィールド属性です:

<input type="date" name="dt" size="10" value="2012-07-21" onChange="SetCheckBox('d')" />
<input type="search" size="10" name="sl" value="" onChange="SetCheckBox('n')" />
<input type="search" size="10" name="sf" value="" onkeypress="SetCheckBox('n')" />
<input type="search" size="20" name="st" value="" onkeypress="SetCheckBox(this);" />

これが私のJavaScriptです:

<script language="javascript" type="text/javascript">
    Function SetCheckBox(id) {
        alert (id.value);
        document.write('test');
    }
</script>

引数を渡さずにdocument.writeを実行しようとしましたが、関数を呼び出していないようです。はい、JavaScriptが有効になっていて、ページの他の場所で問題なく機能しています。スクリプトは本文のフォームのすぐ下にあります。

(欠如した)動作は、複数のブラウザーで同じです。あなたが提供できるどんな助けにも感謝します。レイ

4

4 に答える 4

1

関数ですでに述べた大文字のF以外のいくつかの問題

  1. 関数はidという変数を渡しますが、フィールドを期待します
  2. IDではなく、フィールドを参照していない文字列を渡します
  3. (this)を使用する最後のバージョンのみが機能しますが、警告する値はありません
  4. document.writeは、ページの読み込み後に呼び出されたときに、ページとその上のすべてのスクリプトをワイプします(インラインではないなど)。

したがって、コードはいずれかである必要があります

function SetCheckBox(id) {
    var val = document.getElementById(id).value
    alert (val);
    document.getElementById('someContainer').innerHTML=val;
}

また

function SetCheckBox(fld) {
    var val = fld.value
    alert (val);
    document.getElementById('someContainer').innerHTML=val;
}

あなたの説明に基づいて、私の推測では、あなたはこれをやりたいと思います:デモ

<input type="date" id="dt" name="dt" size="10" value="2012-07-21"
onkeypress="SetCheckBox(this)" />
<input type="checkbox" id="dtChk" />

このスクリプトを使用する

function SetCheckBox(fld) {
    var checkbox = document.getElementById(fld.id+"Chk");
    // check if something is entered, uncheck if not
    checkbox.checked=fld.value.length>0; 
}

そして多分この追加でさえ

window.onload=function() {
  document.getElementById("dt").onkeypress();
}

これは、(再)ロード時にフィールドが空でない場合にチェックボックスをオンにします

于 2012-08-23T16:18:04.683 に答える
1

javascriptの場合、functionキーワードは小文字です。

Function SetCheckBox(id)

する必要があります:

function SetCheckBox(id)

また、IDを取得するためにオブジェクトを渡していないので...

function SetCheckBox(id) {
        var ele = document.getElemenyById(id);
        alert (ele.value);
        document.write('test');
 }
于 2012-08-23T16:11:34.720 に答える
0

javascript関数ではキーワードは小文字で書かれており、ここではFを大文字で書いています。

于 2012-08-23T16:14:04.103 に答える
0

onkeypressおよびonchangeイベントが機能するはずです

<body>
<script type="text/javascript">

function SetCheckBox() {
    alert("1");
}

</script>

<input id = "test" value="" onkeypress="SetCheckBox();" />

<input id = "test1" value="" onchange="SetCheckBox()" />

</body>
于 2012-08-23T16:20:16.760 に答える