初めてこちらで質問させていただきます。
下記のエントリーフォームのコードでSafariでだけ、<input type="submit">が効かず困っております。(Chrome, FireFox, IE, Operaでは動く)
解決方法をご存じの方がいらっしゃいましたらぜひお力添えいただきたく思います。
ちなみにSafariのバージョンは5.1.7。(試したところ6系でも動かず)
よろしくお願いいたします。
lang
1<form name="signup" class="form" novalidate method="post" onsubmit="return false;" > 2<div data-states-for="email"> 3 <label for="email">メール</label> 4 <input type="email" 5 id="email" 6 name="email" 7 value="" 8 required 9 formnovalidate> 10 <div data-errors-for="email"> <small class="form-error is-hidden" 11 data-errors-when="valueMissing"> メールアドレスを入力してください。 </small> 12 <small class="form-error is-hidden" 13 data-errors-when="typeMismatch"> 14 @(アットマーク) .(カンマ)はついてますか? 15 </small> 16 </div> 17 </div> 18<input type="submit" value="登録" /> 19 20<script type="text/javascript"> 21$(function() { 22 // フォームの入力欄が更新されたかどうかを表すフラグ。 23 var isChanged = false; 24 25 $(window).bind("beforeunload", function() { 26 console.log(isChanged); 27 if (isChanged) { 28 // isChangedフラグがtrueの場合、つまり入力内容が変更されていた 29 // 場合のみ文字列を返すようにします。 30 return "入力途中の項目があります。"; 31 } 32 }); 33 34 $("form input, form select, form textarea").change(function() { 35 // 入力内容が更新されている場合は、isChangedフラグをtrueにします。 36 isChanged = true; 37 }); 38 39 $("input[type=submit]").click(function() { 40 // フォームをサブミットする前にフラグを落とします。 41 // ※ これをやらないと、サブミット時に確認メッセージが表示されてしまいます。 42 isChanged = false; 43 }); 44})</script>
上記のようにvalidationをブラウザデフォルトのものではなくJSで制御しています。
lang
1<form name="signup" class="form" id=”signUp” novalidate method="post" onsubmit="return false;" > 2<input type="submit" value="登録" onclick=”document.getElementById(’signUp’).submit()” />
などという形で書くと、今度はJS制御のValidationが着火しなくなってしまいます。
本当に困っています...助けていただけると嬉しいです。よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。