2014-02-06 63 views
0

我在這裏有一個表單驗證。我的文本框不允許使用Jquery驗證的特殊字符( - )。但問題是出價和rfq文本框中的驗證不起作用。它接受特殊字符並提交表單。Jquery刪除類和表單驗證

這是我的工作小提琴。 http://jsfiddle.net/mHCk7/1/

請幫忙嗎?

jQuery(function($) { 
    var validation_holder; 

    $("form#register_form input[name='submit']").click(function() { 

    var validation_holder = 0; 
// /^[A-Za-z\s]+$/ 


     var rfq   = $("form#register_form input[name='n_rfq']").val(); 
     var rfq_regex = /^[0-9\-]+$/; // reg ex qty check 
     var bid    = $("form#register_form input[name='n_bid']").val(); 
     var bid_regex = /^[0-9\-]+$/; // reg ex qty check 
     var mode    = $("form#register_form select[name='n_mode']").val(); 
     var mode_regex  = /^[a-zA-Z ]+$/; // reg ex qty check 

     /* validation start */ 

if(bid == "" || bid.hasClass("mandatory")) { 
     $("span.val_bid").html("This field is required.").addClass('validate'); 
     validation_holder = 1; 
    } else { 
     if(!bid_regex.test(bid)){ // if invalid phone 
      $("span.val_bid").html("Integer Only is Allowed!").addClass('validate'); 
      validation_holder = 1; 

     } else { 
      $("span.val_bid").html(""); 
     } 
    } 

    if(rfq == "" || rfq.hasClass("mandatory")) { 
     $("span.val_rfq").html("This field is required.").addClass('validate'); 
     validation_holder = 1; 
    } else { 
     if(!rfq_regex.test(rfq)){ // if invalid phone 
      $("span.val_rfq").html("Integer Only is Allowed!").addClass('validate'); 
      validation_holder = 1; 

     } else { 
      $("span.val_rfq").html(""); 
     } 
    } 

     if(mode == "") { 
      $("span.val_mode").html("This field is Required.").addClass('validate'); 
      validation_holder = 1; 
     } else { 
      if(!mode_regex.test(mode)){ // if invalid phone 
       $("span.val_mode").html("Invalid Special Characters!").addClass('validate'); 
       validation_holder = 1; 

      } else { 
       $("span.val_mode").html(""); 
      } 
     }   

     if(validation_holder == 1) { // if have a field is blank, return false 
      $("p.validate_msg").slideDown("fast"); 
      return false; 
     } validation_holder = 0; // else return true 
     /* validation end */  
    }); // click end 

}); // jQuery End 



$('#txt1').change(function() { 
if ($(this).val() == 'NEGOTIATED' || $(this).val() == 'SHOPPING' || $(this).val() == '') { 
    $("#txt2,#txt3").val(''); 
    $("#txt2").removeClass("mandatory"); 
    $("#txt3").removeClass("mandatory"); 
} 
else if ($(this).val() == 'BIDDING') { 
    $("#txt3").val(''); 
    $("#txt3").removeClass("mandatory"); 
} 
else if ($(this).val() == 'RFQ') { 
    $("#txt2").val(''); 
    $("#txt2").removeClass("mandatory"); 
} 
else { 
    //here you can specify what to do if the value is NOT negotiated or SHOPPING 
} 
}); 
+0

如果這些字段具有「強制」類別 - 他們所做的 - 您不需要驗證... – CBroe

+0

您需要使用'&&而不是'||':if(bid ==「」&& bid.hasClass( 「強制」))'。 (閱讀:如果該字段是空的_and_它是強制性的。) –

+0

哦,cmon,驗證和removeclass都需要。我該怎麼辦? – user3097736

回答

0

其實我相信問題是它的

if(bid == "" || bid.hasClass("mandatory")) { 

任何試圖返回false這一點被忽略後錯誤...這是因爲出價喜歡VAL不是html元素!

0

我相信在這裏你的錯誤提出,

var bid = $("form#register_form input[name='n_bid']").val(); 

但是,你正在檢查,像這樣的投標值類,

bid.hasClass("mandatory") 

入住這link我修改你的代碼。

+0

無法正常工作。有錯誤 – user3097736

+0

@ user3097736您是否檢查了此鏈接http://jsfiddle.net/dhana36/mHCk7/3/ – dhana