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>
お礼
返信が遅くなりました。すみません。 think49さんのおっしゃっていた >HTMLとjsファイルの文字コードが一致しないと上手く読み込んでくれないことがあります。 と、z_liang_00さんがおっしゃっていた >まず、送信処理は全部コメントアウトしてみましょう。 を試してみました。 もともとShift-JISを使っていたので指定し、 全部コメントアウトをした後、アラートのみをつけてみたところ、 アラートが発生しました。 その後、jsを細かくコメントアウトをしていったところ、 IF文で区切られているうち、数字か文字かをチェックする項目が あるのですが、そこでうまくチェックがされておらず、 そのままメールが送信されている事が判明しました。 ちなみにこのように記述していました。 function check(){ if(document.応募フォーム.氏名.value == ""){ //「氏名」の入力をチェック window.alert('必須項目[氏名]が未入力です'); // 必須項目未入力ダイアログ return false; // 送信を中止 } else if(document.応募フォーム.電話番号.value.match(/[^0-9]+/){ // 「電話番号」の入力をチェック window.alert('必須項目[電話番号]には数字以外が入力されています。'); // 必須項目未入力ダイアログ return false; // 送信を中止 } } 電話番号の数字チェックで落ちているようなので、 原因を自分なりに探ってみようと思います。 分からないようでしたら、また別のスレッドをたてて質問したいと思います。 みなさんのおかげで原因がわかりました!大変助かりました! ありがとうございました。
補足
数字チェックの原因を探ったところ、 ()の")"が不足していました。 うっかりつけ忘れミスでした・・・。 大変お騒がせ致しました。 ご協力ありがとうございました!