モーダルを使用してログインボックス(bootstrap-modal.js)を表示するページで、twitter ブートストラップ css フレームワークを使用しています。ログイン ボックスでは、電子メール ID とパスワードを検証するために jquery の非常に単純な検証 (jquery.rsv.js) を使用しています。問題は、検証が IE 9 のログイン モーダル ボックス内で機能しないことです。同じページにモーダルではない別のフォームがあり、検証は完全に正常に機能します。
以下は私のブートストラップモーダルフォームコードです:-
<div id="modal-from-login" class="modal hide fade">
<div class="modal-header">
<a href="#" class="close">×</a>
<h3>Login for existing customers</h3>
</div>
<div class="modal-body">
<form id="loginform" name="loginform" method="post" action="login/">
<div class="clearfix"><label for="comments">Email ID:</label>
<input type="text" name="email" id="loginemail" /></div>
<div class="clearfix"><label for="comments">Password:</label>
<input type="password" name="password" id="loginpassword" />
</div>
</div>
<div class="modal-footer">
<input type="submit" style="float:left;margin-left:130px;" name="login" id="login" value="Login" class="btn primary" />
</div>
</form>
</div>
これはボタンコードです:-
<button class="btn primary" data-controls-modal="modal-from-login" data-backdrop="true" data-keyboard="true" style="margin-top:5px;">Login</button>
検証用の JavaScript コード:-
function my_custom_function()
{
if (document.getElementById("website").value){
var url = document.getElementById("website").value;
var test = /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(url);
var field = document.getElementById("website");
if(test){
return true;
}else{
return [[field, "Please enter a valid website."]];
}
}else{
return true;
}
}
$(document).ready(function() {
function loginComplete(){
return true;
}
$("#loginform").RSV({
onCompleteHandler: loginComplete,
rules: [
"required,loginemail,Please enter your email id.",
"valid_email,loginemail,Please enter a valid email address.",
"required,loginpassword,Please enter your password."
]
});
});
</script>
jquery 1.4.2を使用しています
何が問題ですか??このコードは、IE8 でも他のすべてのブラウザーで問題なく動作します。この問題は IE 9 でのみ発生します。