8

ユーザーが入力名「field1」を入力しているときに、「field2」という名前の入力タグが存在するかどうかを確認したい。onchangeこれを行うには、field1 のinputタグのイベントを使用して JavaScript 関数を実行します。(アラート ボックスを使用してテストしています。) field2 が存在しない場合、JavaScript がボタンをクリックすると、フォームが更新されて field1 と field2 の両方が表示されます。しかし、フィールド2が存在する場合でも、3つの方法のどれを使用してもアラートボックスがポップアップします。やなどを使っifてあらゆる種類の組み合わせを試しました。null'undefined'

field2 が存在する場合に警告ボックスが表示されるのはなぜですか?

function foobar(){

if(!document.getElementsByName("field2"){
alert("foobar");
}

if(!document.forms[0].field2){
alert("foobar");
}

if(!document.forms[0].elements.namedItem("field2"){
alert("foobar");
}
}
4

4 に答える 4

6

実は問題は、ページにさまざまなフォームが含まれていたため、必要なフォームをforms[0]参照していないことでした。したがって、フィールドを直接使用thisして参照するのが最善の方法だと思います。inputまた、比較するundefinedよりも比較した方がわかりやすいです!

これは機能します:

function foobar(fooform){
    if (fooform.field2 === undefined) {
        alert("foobar");
    }
}

このように呼び出されます:

foobar(this.form);
于 2012-05-16T11:13:25.487 に答える
6

ブラケットがありません:if(!document.getElementsByName("field2"))

于 2012-05-15T15:07:38.640 に答える