2014-02-14 45 views
0

任何人都可以幫助我找出爲什麼這個腳本不起作用嗎?點擊提交按鈕後,我的表單仍在提交。e.preventDefault不起作用2

下面是代碼:

submitadd.submit(function(e){  

    var submitadd = jQuery('#submitadd'), 
     yearofmanufacturing = jQuery('#yearofmanufacturing'), 
     price = jQuery('#price'), 
     addtext = jQuery('#addtext'); 

    if(yearofmanufacturing.val()==''){ 
    jQuery('#yearofmanufacturing').addClass('bordered2'); 
    jQuery('#yearofmanufacturing').removeClass('styled_select'); 
    jQuery("#yearofmanufacturing").attr("placeholder", "Εισάγετε Χρονολία").placeholder(); 
    e.preventDefault(); 
    return false; 
    alert('yearof......enter in the if'); 
    } 
    else { 
    alert("yearnotempty?"); 
    } 

    if(price.val()=='') { 
    jQuery('#price').addClass('bordered2'); 
    jQuery('#price').removeClass('styled_select'); 
    jQuery("#price").attr("placeholder", "Εισάγετε τιμή").placeholder(); 
    e.preventDefault(); 
    return false; 
    alert('price...enter in the if'); 
    } 

    if(addtext.val()==''){ 
    jQuery('#addtext').addClass('bordered2'); 
    jQuery('#addtext').removeClass('styled_select'); 
    jQuery("#addtext").attr("placeholder", "Εισάγετε περιγραφή αγγελίας").placeholder(); 
    e.preventDefault(); 
    return false; 
    alert('add text...enter in the if'); 
    } 

    alert('addtext = ' +addtext.val()); 
}); 

警報沒有顯示時提交已被點擊。任何幫助將深表謝意。

方面,約翰

+1

檢查控制檯是否有錯誤。 – ZiNNED

+0

'submitadd'這是什麼? – Jai

+0

不知道爲什麼!但「返回假」;而不是preventDefault()應該做的伎倆。 – lshettyl

回答

1

爲了節省空間,你可以做這樣的事情:

JQuery

jQuery('#submitadd').submit(function(){  

    var checks = [jQuery('#yearofmanufacturing'), 
        jQuery('#price'), 
        jQuery('#addtext')]; 

    for(var i = 0; i < checks.length; i++){ 
     var x = checks[i]; 
     if(x.val() == ''){ 
      x.addClass('bordered2').removeClass('styled_select'); 
      x.prop("placeholder", "Εισάγετε Χρονολογία"); 
      console.log('Value for ' + x.prop('id') + ' is empty.'); 

      return false; 
     } 
     else { 
      console.log('Value for ' + x.prop('id') + ' is not empty.'); 
     } 
    } 

}); 

Demo

我重寫了大部分的功能,但它仍然同樣的東西。我已經刪除e.preventDefault();,而我正在使用return false;

如果該值爲空。

您已指定submitadd事件裏面變量:這也記錄到控制檯(console.log()),當你與F12

注阿克蘇的回答太調試,這是可見的。您必須將它移到外面才能使事件處理程序觸發,否則該變量未定義,且代碼不起作用。

+0

工程就像一個魅力..完美。謝謝! – user2417624

0

你指定的事件裏面的submitadd變量。您必須將它移到外面才能使事件處理程序觸發,否則該變量未定義,且代碼不起作用。

var submitadd = jQuery('#submitadd'); 

// user fill all fields as it should, so form can be submitted 
submitadd.submit(function(e){  

    var yearofmanufacturing = jQuery('#yearofmanufacturing'), 
     price = jQuery('#price'), 
     addtext = jQuery('#addtext'); 
    ... 
+0

仍然是一樣的故事...表單被提交... – user2417624

+0

@ user2417624嗯......我想你應該刪除所有這些'e.preventDefault's並使用** only **'return false;'。 – aksu

+0

@Downvouter請解釋 – aksu

0

改變這一點:

submitadd.submit(function(e){  

這樣:

jQuery('#submitadd').submit(function(e){  

在你的情況,可變submitadd它被宣佈之前被使用。


,或者你可以聲明之前提交:

 var submitadd = jQuery('#submitadd') 
    submitadd.submit(function(e){ 
+0

我也試過,以及..didn't工作。我想我會重寫劇本... – user2417624

0

解決辦法:移動var submitadd = jQuery('#submitadd');你的功能!


我會建議你一些事情:

  • 使用您的jQuery變量:

    而不是使用yearofmanufacturing的,你寫jQuery('#yearofmanufacturing')多次

  • 命名規則:

    如果您聲明jQuery對象,我會建議您使用變量名稱$price而不是price

    您正在試圖恢復一些後,呼叫警報():

  • 不要寫可達代碼。這沒有任何意義。

  • 不要爲調試問題濫用警報():

    使用console.log()console.debug()console.info()console.warn()最佳調試exceperience。

  • 跨瀏覽器支持:

    的Internet Explorer < = 8不知道.preventDefault().很樂意與這樣的: (e.preventDefault) ? e.preventDefault() : e.returnValue = false;