これは私のフォームです:
<div id="MyModal" class="m-modal-container">
<div class="form-wrap">
<form id="form_reg" class="m-form reg-form" action="www.somedomain.com/subPage">
<div class="form-element email">
<input type="email" class="text" name="email" id="email" value="" placeholder="Email Address" title="Email is required." maxlength="90" required>
</div>
<div class="form-element buttons">
<button type="submit" class="button primary submit">Register</button>
</div>
</form>
</div>
</div>
これは、送信を処理するための私のJSファイルからのものです
$("#MyModal #form_reg").submit(function(event){
var initial_id = 0;
$.ajax({
url: '/dir/file.cfc',
async: false,
data: {
method: 'myFunction',
emailAddress: $("#MyModal #form_reg").find('[name="email"]').val(),
email_id: 0
},
cache: false,
type: 'get',
dataType: 'json'
})
.success(function(response) { initial_id = response.jsid; })
.error(function(jqXHR, textStatus, errorThrown) { })
.complete(function(response) {
if (initial_id == 0) {
return true;
} else {
event.preventDefault();
$('#MyModal').dialog('close');
return false;
}
});
});
私の質問:
このフォームは、メイン ページの上にモーダルとして表示されます。ユーザーが入力し、送信をクリックすると、新しいページに移動します。HTML5 フォーム検証を使用して必須フィールドを示します。古いブラウザーとの互換性のために webShims/polyfill を使用します。
それはすべて正常に機能します。特定の状況で問題が発生します。フォームを「サブページ」(フォームのデフォルト アクション) に送信したくありません。代わりに、モーダルを表示したページにとどまり、モーダルフォームを単純に閉じたいと思います。(これは、電子メールがシステムに既に存在する場合に発生します。電子メールがシステムに既に存在するというメッセージを表示するセカンダリ フォーム ページにユーザーを移動させたくありません)。
$("#MyModal #form_reg").click(function(event){ 何とか何とか}); を使用する場合 - 次に、送信と非送信を制御できます。ただし、その後、HTML5 フォーム検証機能が失われます。$("#MyModal #form_reg").submit(function(event){ blah blah blah }); を使用する場合 フォームの検証は機能しますが、ページは送信され、イベントはコードによってキャプチャされません。
これまでに行ったすべての調査は、IE7 が .submit イベントでうまく機能しないことを示していますが、フォーム検証が機能するには .submit イベントが必要です。
この 3 つを連携させる方法はありますか? 私の問題を引き起こしているブラウザは IE7 だけです。.submit/form 検証は、FF、IE9、Opera、および Chrome で意図したとおりに機能します。
どんな提案でも大歓迎です。ありがとうございました。