jqueryフォームプラグインの助けを借りてAJAXを使用してフォームを送信しています。e.preventDefault()
IE8で1回だけ機能することを除いて、うまく機能します。2回目の送信後、ページはフォームのURLにリダイレクトされます。
ある種のイベント委任を行う必要があると確信していますが、その方法は完全にはわかりません。
コンテキストはワードプレスサイトです。次のスクリプトは、登録フォームHTMLの直前に表示されます。
<script type="text/javascript">
jQuery.fn.outerHTML = function(s) {
return (s)
? this.before(s).remove()
: jQuery("<p>").append(this.eq(0).clone()).html();
}
jQuery(document).ready(function($){
$("form input").removeAttr('tabindex');
ajaxregister = function(e) {
//e = e || window.event;
e.preventDefault();
$(this).animate({opacity:0}, 500);
$(this).siblings("#loading").fadeIn();
$(this).ajaxSubmit({
//cache : false,
//url:'http://streetofwalls.dev/wp-login.php?action=register'
success: function( data ) {
//console.log(data);
var $message = $(data).find('.message').outerHTML();
var $error = $(data).find('#login_error').outerHTML();
var $form = $(data).find('#registerform').outerHTML();
//console.log( 'success' );
//$(e.target).html( ( ($error) ? $error : $message ) + $form ).fadeTo(500,1);
var target_id = $(e.target).attr("id");
$("#"+target_id).html( ( ($error) ? $error : $message ) + $form ).animate({opacity:1}, 500);
$("#"+target_id).siblings("#loading").css('display', 'none');
}
});
return false;
}
$(".widget_reg_widg #registerform").submit( ajaxregister ); //should this be .delegate() ???
});
</script>