2つのjavascriptを組み合わせたい
フォームメール用の2つのjavascriptがあります。
●2重送信防止とデータ送信後指定ページへ遷移するjavascript
●テキストボックスが空欄だった時にアラートを表示するjavascript
の2つです。
この2つを組み合わせようとしたのですが、うまく動きません。
ご指導いただきたくお願いいたします。
***************************************************
【●2重送信防止とデータ送信後指定ページへ遷移するjavascript】【動きます】
送信ボタン押下後、2重送信を防止しながら、データ送信後は「location.href = "finish.html"」でfinish.htmlを表示します。
<script type="text/javascript" src="js/jquery.js"></script>
<script>
jQuery(function($) {
$('#form1').submit(function(event) {
// HTML送信キャンセル
event.preventDefault();
//フォーム要素取得
var $form = $(this);
// 送信ボタンを取得
// (後で使う: 二重送信防止)
var $button = $form.find('button');
// 送信
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
data: $form.serialize()
+ '&delay=1',
timeout: 10000,
// 送信前
beforeSend: function(xhr, settings) {
// ボタン無効二重送信防止
$button.attr('disabled', true);
},
// 応答後
complete: function(xhr, textStatus) {
// ボタン有効再送信許可
$button.attr('disabled', false);
},
// 通信成功処理
success: function(result, textStatus, xhr) {
// 入力値初期化
$form[0].reset();
location.href = "finish.html";
},
// 通信失敗処理
error: function(xhr, textStatus, error) {
alert('retry');}
});
});
});
</script>
<form name="form1" id="form1" method="POST" name="form1" action="insert.php">
<input type="text" name="tel" value="" />
<input type="text" name="fax" value="" />
<input type="submit" value="送信A">
</form>
***************************************************
【●テキストボックスが空欄だった時にアラートを表示するjavascript】【動きます】
テキストボックスが空欄だったらアラートを表示します。
<script>
function check3() {
var tel3 = document.form1.tel.value;
var fax3 = document.form1.fax.value;
var isValid = true;
if (!tel3) {
alert("電話未入力");
isValid = false;
}
if (!fax3) {
alert("FAX未入力");
isValid = false;
}
if (!isValid) {
return;
}
document.form1.submit();
}
</script>
<form name="form1" id="form1" method="POST" name="form1" action="insert.php">
<input type="text" name="tel" value="" />
<input type="text" name="fax" value="" />
<input type="submit" value="送信B" onclick="check3();">
</form>
***************************************************
【上記の2つを組み合わせてみました。】【動きません】
テキストボックスが空欄だったらアラートを表示しながら2重ボタン排除&finish.htmlに遷移というものです。
【結果】
「問題なく動くjavascript」2つを単純に組み合わせただけなのですが、
finish.htmlに遷移せずinsert.phpが表示されます。ご指導宜しくお願いします。
<script type="text/javascript" src="js/jquery.js"></script>
<script>
jQuery(function($) {
$('#form1').submit(function(event) {
event.preventDefault();
var $form = $(this);
var $button = $form.find('button');
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
data: $form.serialize()
+ '&delay=1',
timeout: 10000,
beforeSend: function(xhr, settings) {
$button.attr('disabled', true);
},
complete: function(xhr, textStatus) {
$button.attr('disabled', false);
},
success: function(result, textStatus, xhr) {
$form[0].reset();
location.href = "finish.html";
},
error: function(xhr, textStatus, error) {
alert('retry');}
});
});
});
</script>
<script>
function check3() {
var tel3 = document.form1.tel.value;
var fax3 = document.form1.fax.value;
var isValid = true;
if (!tel3) {
alert("電話未入力");
isValid = false;
}
if (!fax3) {
alert("FAX未入力");
isValid = false;
}
if (!isValid) {
return;
}
document.form1.submit();
}
</script>
<form name="form1" id="form1" method="POST" name="form1" action="insert.php">
<input type="text" name="tel" value="" />
<input type="text" name="fax" value="" />
<input type="submit" value="送信B" onclick="check3();">
</form>
お礼
回答ありがとうございます!!! >>test() 中の、 document.forms は参考URLに載ってませんね。 IE依存かも。 いえ!IEだけではなく他のブラウザなどでも、 docuemnt.forms[0] 自体は、フォームとして認識されているので問題ないと思うのですが>< 例えば test()のスクリプトを function test(){ document.forms[0].submit(); } ↓ function test(){ document.form1.submit(); } formタグを <form action="./" method="POST"> ↓ <form action="./" method="POST" name="form1"> に変更しても、 送信処理がおこなわれません。。。