2014-02-14 98 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;