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>
お礼
ありがとうございます。 >オブジェクト名(タグの名前)には全角文字は使うべきではありません。 薄々感じてはいたんですが やっぱりそうかと認識いたしました。 >confirm("送信します。よろしいですか?"); >これだけにしたほうがすっきりします。 confirm("送信します。よろしいですか?"); 上だけにするとキャンセルした場合でも送信してしまいましたので トホホで「confirm」を検索し調べたところ if(confirm("送信します。よろしいですか?")) { return true; } else { return false; }} こんな感じにすればよいことが分かりました。 confirmの意味さえよく分からなかった自分ですから 勉強になりました。