5 つのこと:
target
の属性をform
完全に削除します。デフォルトは同じウィンドウです。それは実際には問題ではありませんが、次の理由によります。
独自のコードでフォームを処理しているため、 にsubmit
戻ってイベントをfalse
キャンセルします。onSubmit
これを行う簡単な方法の 1 つは、関数を returnfalse
にし、 でonSubmit
呼び出しの結果を返すことです。
この行は正しくありません:
var response = document.getElementById('answer').value;
form
要素にはvalue
. id
代わりにinput type="text"
要素にを配置する必要があります。
href
onは関数ではなく、location
プロパティです。それに割り当てるだけです(または直接割り当てるだけlocation
です)。
これは少し微妙です: というグローバル関数がanswer
あり、 を持つ要素があるためid
"answer"
、競合があります: どちらも最終的にwindow
オブジェクトのプロパティになりたがっています (古い DOM0 属性を使用しない多くの理由の 1 つonxyz
— またはグローバル関数、それに来てください)。そのため、そのうちの 1 つの名前を変更する必要があります。たとえば、関数をcheckAnswer
などに変更します。
そう:
<form onSubmit="return checkAnswer();">
<input id="answer" type="text" maxlength="55" class="box" autofocus />
<input type="submit" class="submit" value="SUBMIT" />
</form>
と:
function checkAnswer(){
var response = document.getElementById('answer').value;
if (response == "correctanswer")
location = 'right.html';
else
location = 'wrong.html';
return false;
}
完全な例:ライブコピー| ライブソース
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
</head>
<body>
<form onSubmit="return checkAnswer();">
<input id="answer" type="text" maxlength="55" class="box" autofocus />
<input type="submit" class="submit" value="SUBMIT" />
</form>
<script>
function checkAnswer(){
var response = document.getElementById('answer').value;
if (response == "correctanswer")
location = 'http://jsbin.com/ukifoh/1'; // 'right.html';
else
location = 'http://jsbin.com/ukifoh/2'; // 'wrong.html';
return false;
}
</script>
</body>
</html>
常に一貫性のある有用なコード インデントを使用することをお勧めします。また、ステートメントだけでなく、制御構造を含むブロックを常に使用することも大好きです。