2014-02-14 4 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()); 
}); 

Ни одно из предупреждений не показывает, когда подавать была нажата. Любая помощь будет глубоко оценена.

Regard, Джон

+1

Проверьте ошибки на консоли. – ZiNNED

+0

'submitadd' что это? – Jai

+0

Не знаете, почему! но "return false"; вместо 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;.

Если значение пустое. Это также записывается в консоль (console.log()), это видно при отладке с ответом F12

Note АКСУ слишком:

Вы указали submitadd переменной внутри события. Вы должны переместить его снаружи, чтобы получить обработчик обработчика события, иначе переменная не определена, и код не работает.

+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' и использовать ** только **' 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

Я пробовал это также ... не работал. я думаю, я переписал сценарий с нуля ... – user2417624

0

Решение: Move var submitadd = jQuery('#submitadd'); из вашей функции!


Я рекомендовал бы вам кое-что:

  • Используйте переменные JQuery:

    Вместо использования yearofmanufacturing, вы пишете jQuery('#yearofmanufacturing') несколько раз

  • соглашения об именовании :

    Я бы рекомендовал использовать имена переменных, например $price, вместо price, если вы объявляете объекты jQuery.

  • Не пишите недостижимый код:

    Вы пытаетесь вызвать предупреждение() после возвращения что-то. Это не имеет никакого смысла.

  • Не злоупотребляйте предупреждение() для отладки проблем:

    Использование console.log(), console.debug(), console.info() и console.warn() для лучшей отладки exceperience.поддержка

  • Crossbrowser:

    < Internet Explorer = 8 не знает .preventDefault(). Радуйтесь с чем-то вроде этого: (e.preventDefault) ? e.preventDefault() : e.returnValue = false;

Смежные вопросы