プロが教える店舗&オフィスのセキュリティ対策術

こんにちは,よろしくお願いします。次のような関数を作って,条件に当てはまれば,formElemを送信するコードを書いたところ,条件を満たしていないのにもかかわらず,送信されてしまいます。それはどこが悪いのでしょうか。教えてください。
もう少し詳しく言うと,この関数は,p1とg1が変更されたとき(onchngeで)に呼び出されるようになっています。
このとき,p1が先に変更され(条件1)を満たしtrueになり,その後で,g1が変更され(条件2)がtrueになったときは,正常に機能します。alert("yes-submit");も表示され,formの送信も実行されます。
しかし,この逆で,g1が先に変更され(条件2)を満たしtrueになった時に,formが送信されてしまうのです。(条件1)が満たされていないのにもかかわらずです。気づかないうちに,条件を満たしていることもあるのかと思って,alert("yes-submit");を追加しました。しかし,そのalert("yes-submit");は表示されません。つまり,最後のif文がyesの時に実行されるブロックを通過していないのにもかかわらず,formの送信のみが行われてしまうのです。(true)&&(false)でyesにはなりませんよね。これって,変ですよね。いったいなぜ,このような挙動を示すのでしょうか?お願いします。教えてください。

function SchlSlct(){
var formElem = document.getElementById("form1");
if(document.getElementById("p1").selectedIndex > 0){
alert("p-yes");
}else{
alert("p-no");
} //以上(条件1)
if(document.getElementById("g1").value != ""){
alert("g-yes");
}else{
alert("g-no");
} //以上(条件2)
if((document.getElementById("p1").selectedIndex > 0) && (document.getElementById("g1").value != "")){
alert("yes-submit");
formElem.submit();
} //以上((条件1)&&(条件2))
}

A 回答 (1件)

formElem.submit(); が実行された結果ではなく、



(<input type="submit">が存在するとき、)
入力フィールドでEnterキーを押すと送信動作をしますが
そういう事ではないのですか?
    • good
    • 0
この回答へのお礼

steel_grayさん,また今度もありがとうございます。
まさに,おっしゃるとおりでした。disabled="disabled"を挿入し忘れていました。すみませんでした。お騒がせしました。本当にありがとうございました。

お礼日時:2008/06/05 00:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!