IEでsubmitボタンにdisplay:noneを指定するとEnterが効かない
jQuery UIのダイアログを使ってログインダイアログを実装したときに、ユーザー名とパスワードを入れてEnterでログイン処理(formのsubmit)をしたい。
jQuery UIのdialogのオプションではbuttonsにtype属性を指定できないようなので、最初は
<input type="submit" style="display:none" />
をform内に追記。
これがFirefoxでは動くけど、IEではdisplay:noneにするとEnterキーでsubmitできない。ならばと次のように変更してみた。
<div style="width:0; height:0; overflow:hidden;">
<input type="submit" />
</div>
これで大丈夫かなと思ったけど、やっぱり出来ない。
次のは見えないスタイルにする。でもこれはtab移動してしまうので嫌。
<input type="submit" style="width:0;height:0;overflow:hidden;border:none;background-color:white;" />
onkeydownやonkeypressを使ってjavascriptでsubmitするのはめんどくさいので嫌。
最終的にはダイアログのbuttonsを使うのをやめて、直書きするようにした。サンプルコード
<a id="toolbar-login" href="#">ログイン</a>
<form id="login-form" name="login-form" action="<?php echo site_url( 'wp-login.php' ) ?>" method="post">
<div>
<label for="user_login">ログインID</label>
<input type="text" name="log" id="user_login" class="text" value="" />
</div>
<div>
<label for="user_pass">パスワード</label>
<input type="password" name="pwd" id="user_pass" class="text" value="" />
</div>
<div style="text-align:right;margin-top:5px;padding-top:5px;border-top:1px solid #AAAAAA;">
<input type="submit" id="login-submit" value="ログイン"/>
<input type="button" id="login-cancel" value="キャンセル"/>
</div>
</form>
<script type="text/javascript">
jQuery(function() {
jQuery("#login-form").dialog({
title: "ログイン",
autoOpen: false,
height: 220,
width: 360,
modal: true
});
jQuery("#login-submit").button();
jQuery("#login-cancel").button().click(function(){jQuery('#login-form').dialog('close');});
jQuery('#toolbar-login').button().click(function(){jQuery('#login-form').dialog('open');jQuery('#user_login').focus();});
});
</script>
ちなみにIEはform内に<input type="text"/>が一つだとEnterキーが効かないというのもあるらしい。