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

現在、XHTMLで簡単なログイン画面を作成しているのですが、
IEでは正常に動作するのに、Chromeではエラーとなってしまいます。
色々調べてみたのですが解決策が見つからないので
どなたか教えてください。
現象は
ログインボタンをクリックして.jsのclickLogin()を呼びます。
clickLogin()でとりあえず自分をもう一度呼ぶ処理を記述したのですが

document.myForm.action = "Test.xhtml";
でエラーとなります。(Chromeでは。。。)
ChromeとIEでは記述の仕方が違うのでしょうか?

【Test.xhtml】
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-style-type" content="text/css" />
<meta http-equiv="Content-script-Type" content="text/javascript" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript" src="Test.js?v=R001"></script>

<title>ログイン画面</title>

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

</head>
<body >
<form id="myForm" action="" name="myForm" method="post">
<div width="100%">
<div width="100%">
<table>
<tr>
<td>ログイン</td>
</tr>
<tr>
<td>
<table>
<tr>
<td align="right">UserID:</td>
<td align="left"><input type="text" id="txt_user_id" name="txt_user_id" size="30" /></td>
</tr>
<tr>
<td align="right">Password:</td>
<td align="left"><input type="password" id="txt_password" name="txt_password" size="30" /></td>
</tr>
<tr>
<td></td>
<td align="left"><br /> <input type="submit" value="ログイン" onclick="return clickLogin();" /></td>
</tr>
</table>
</td>
</tr>
</table>
</div>
</div>

</form>
</body>
</html>

【Test.js】
function clickLogin() {

var inpUserId = document.getElementById("txt_user_id").value;
var inpPassword = document.getElementById("txt_password").value;

// [UserID]入力チェック
inpUserId = inpUserId.trim();
if (inpUserId == "") {
return false;
}

// [Password]入力チェック
inpPassword = inpPassword.trim();
if (inpPassword == "") {
return false;
}

alert("1");
myForm.action = "Test.xhtml";
alert("2");
myForm.submit();

return true;

}

A 回答 (2件)

なんか動きそうな気もしますが・・・



>document.myForm.action

var myForm=document.getElementById("myForm");
してみては?

ちなみにもとファイルがTest.xhtmlならactionを書き換えてもそうでなくても同じじゃない?
また違うページを指定してしまうとjavascriptでしかログインできなくなるけど
ほんとうにそういうポリシーで大丈夫?
普通は送られてきたデータをサーバー側でチェックするもんだけど。
(必要項目の抜けなどユーザー補助は有効だけど)
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
回答内容は昨日すでに試していますが、駄目でした。
本当はログインボタン押下でサーバー側でチェックをするのですが
まだそこまで実装していないので、とりあえず自分自身にpostしています。
何は他の方法はありませんでしょうか?

お礼日時:2015/12/18 10:09

No.1さんの言うとおり、myFormオブジェクトが設定されていないので、動作しません。


以下のように、オブジェクトを取得する事で正常に動作します。
(Chrome バージョン 47.0.2526.106 mにて動作確認)

var inpUserId = document.getElementById("txt_user_id").value;
var inpPassword = document.getElementById("txt_password").value;
var myForm = document.getElementById("myForm"); ←これを追加。
    • good
    • 0

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