SSL + IE11の環境でtype="password"の値が取得できない
会員登録の画面でユーザーから「登録できない」と問合せがあったので調べたときの覚書。
<会員登録処理の流れ>
ユーザー名、パスワード、パスワード確認を入力
↓
POST
↓
プレビュー画面
※このときPOSTされた値はdisplay:noneで隠してある。
↓
POST
↓
登録
調べてみるとプレビュー画面からPOSTする際に確認用パスワードの値を取得出来ていない。
IE11のバグとして上がっているみたい。
この現象の確認と対策用に作成したスクリプトはこちら
<html>
<head>
<script src="https://code.jquery.com/jquery-1.11.0.min.js"></script>
<title>POSTテスト</title>
<style>
.hide {display: none;}
</style>
</head>
<body>
<?php var_dump($_POST);?>
<form id="submit-form" method="post">
<div class="frame <?php if (!empty($_POST)) echo 'hide';?>">
<input type="text" name="test" value=""/>
<input type="password" name="pass" value="<?php if (!empty($_POST['pass'])) echo $_POST['pass'];?>"/>
<input type="password" name="pass_confirm" value="<?php if (!empty($_POST['pass_confirm'])) echo $_POST['pass_confirm'];?>"/>
</div>
<button>submit</button>
</form>
<script>
jQuery(function($){
var jForm = $('#submit-form');
jForm.submit(function() {
alert(jForm.find('[name=pass_confirm]').val());
if (confirm('post?')) {
return true;
}
return false;;
});<?php if (!empty($_POST)) :?>
// this is for SSL + IE11
//jForm.find('[name=pass_confirm]').val('<?php echo $_POST['pass_confirm'];?>');
<?php endif;?>
});
</script>
</body>
</html>
最後のコメントを外すとSSL + IE11の環境でも動作するようになる。
SSL証明書をインストールしていないサーバーでも再現しなかったので注意。
< Related Posts >