このスクリプト が、私はそれが何をしたいのかしないだろうので、私は、jqueryのいくつかの基本的な考え方を逃しているようです:jqueryの - event.preventDefault()内部関数内
$(document).ready(function(){
$('#form').submit(function(event) {
console.log("submitted form, checking #domain_url_input ");
// event.preventDefault();
var submit_error=false;
var is_primary_url = false;
var url = $('#domain_url_input').val();
var get_url = '/i.php?a=check&url2check=' + escape(url);
var valid_data = $.ajax({
event: event,
url: get_url,
success: function(response) {
// alert('ajax successful');
is_primary_url = $(response).find('#check_div').text();
// alert(is_primary_url);
var dns_zone = $('#dns_zone_sel').val();
if (is_primary_url == 'YES' && dns_zone=='')
{
event.preventDefault();
alert('Choosing a DNS ZONE is required!');
$('#dns_zone_sel').focus();
this.submit_error=true;
// if (submit_error==true) event.preventDefault();
// return 'error';
} //
} // end func success
}); // ajax
}); // submit
}); // rdy
(Iが減少しましたコードコースのビット)
コードを除いて、完全に機能します。
event.preventDefault();
は有効になりません。私は右
$( '#フォーム')。提出(関数(イベント){...後に、第2のラインにそれを置く場合
はそれはしかし動作します。
AJAX呼び出しの作品、私はポジティブな結果を得る ことが可能ではないでしょうかのように、それ以上を提出しないようにすることである
警告の後:?
event.preventDefault(); alert( 'DNS ZONEを選択する必要があります!');
は、preventDefault() が効果を持たないことを除いて、完全に機能します。 私は適切なアクセス権を持っていないイベント「イベント」が原因である可能性がありますか?
目的は次のとおりです。
送信イベントを停止します。 古いjsスクリプト "return false;"でこれを行いました。 でも動作しません。 Btw:preventDefault()と "return false"の違いを知っています...私は試した情報を追加しています。この場合、 "return false"は$(...)。ajax()から$(...)。submit()イベントに戻ります。
ポイントは次のとおりです。$()。ajaxパーツが依然としてリクエストを行っているときに、submit()というフォームがすでに進行中です。だから何とか私は、Ajaxが終了するまでsubmit()を待たせる必要がありますか?
任意のアイデア用のThanx!
AFTER ALL THIS 私が望んだかexcactly WORKS SOLUTION次 - 私の友人アンドレアス、@Coryと@Michaelのおかげ:ALL TO
`<script type="text/javascript">
$(document).ready(function(){
var disableSubmit = false;
var transmitNow = false;
$('#form').submit(function(event) {
console.log("submitted form, checking #domain_url_input ");
console.log("disableSubmit=" + disableSubmit);
if(transmitNow === true) return;
event.preventDefault();
if (disableSubmit ===true) return;
$('#form').prop('disabled', true);
var submit_error=false;
var is_primary_url = false;
var url = $('#domain_url_input').val();
if (url=='') { alert('Error! A domain/url must be provided!'); return false; }
var get_url = '/i.php?a=check&ajax=1&url2check='
+ escape(url) + '&t='+ Date.now();
disableSubmit = true; // Formular ausgrauen .... als todo
var valid_data = $.ajax({
url: get_url,
error: function(){ disableSubmit = false; $('#form').prop('disabled', false); },
complete: function(){ disableSubmit = false; $('#form').prop('disabled', false); },
success: function(response) {
disableSubmit = false;
$('#form').prop('disabled', false);
is_primary_url = $(response).find('#is_url_primary_check_div').text();
var registrar = $('hd[registrar]').val();
var webserver = $('hd[webserver]').val();
var dns_zone = $('#dns_zone_sel').val();
if (is_primary_url == 'YES' && dns_zone=='')
{
// event.preventDefault();
alert('You entered a primary domain. Choosing a DNS ZONE is required!');
$('#dns_zone_sel').focus();
submit_error=true;
}
if (submit_error != true)
{
transmitNow = true;
$('#form').submit();
}
} // end event func success
}); // ajax
}); // submit
}); // rdy
</script>`
ありがとう!! :) 幸福!
'event_submit'はどこに定義されていますか?最初の使用法は 'preventDefault()'を呼び出すことです。それが 'null'または' undefined'の場合、確かに動作しません。また、AJAXは非同期です。送信イベントは、AJAXコールの成功コールバックの前に完了しています。その理由は、そこでは機能しません。 –
こんにちは、:) - はい、私は現在のためにスクリプトを変更しました: "event_submit"が定義されています、私はここで "イベント"を短縮し、コメントなどでそれを変更するのを忘れて元のスクリプトイベントの名前はすべての場合にevent_submitですので、問題はありません。刺激には申し訳ありません。 説明のためのThanx /非同期性の確認。 – davidman77