2010-12-06 85 views
0

我正在用jQuery製作一個通用的文本驗證函數。我創建了函數文本,並將ID,要求,表達式,偏移量,限制傳遞給函數。我做這件事的方式是幫助我在單次輸入更改和提交整個表單時輕鬆地運行該功能。我已經完成了這個功能,但是我無法運行。JavaScript和jQuery函數錯誤

var Val = { 
    'text' : function(event, ident,req,regexp,offset,limit) { 
     var ele = $(document.getElementById(ident)); 

     if(req == 1 && ele.val().length < 1) { 
      Val.errors = true; 
      $("#"+ident+"Error").html("Please enter your " + ele.attr("title")); 
      $("#"+ident+"Error").show("fast"); 
     } else if(ele.val().length <= offset || ele.val().length > limit) { 
      Val.errors = true; 
      $("#"+ident+"Error").html(ele.attr("title") + " should be between " +offset+ " & " +limit+ " charecters long"); 
      $("#"+ident+"Error").show("fast"); 
     } else if(regexp != null) { 
      switch (regexp) { 
       case 'text': 
        var regEx = /^([a-zA-Z]+)$/; break; 
       case 'number': 
        var regEx = /^([0-9]+)$/; break; 
       case 'email': 
        var regEx = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; break; 
       case 'date': 
        var regEx = /^([123]0|[012][1-9]|31)-(0[1-9]|1[012])-(19[0-9]{2}|2[0-9]{3})$/; break; 
       case 'alphanum': 
        var regEx = /^([a-zA-Z0-9._-]+)$/; break; 
       default: 
        var regEx = /^([a-zA-Z0-9._-]+)$/; break; 
      } 
      if(!regEx.test(ele.val())) { 
       Val.errors = true; 
       $("#"+ident+"Error").html(ele.attr("title") + " is not valid"); 
       $("#"+ident+"Error").show("fast"); 
      } 
     } 
    }, 

    'send' : function(){ 
     if(!Val.errors) { 
      $('#form').submit(); 
     } 
    } 
} 

函數的調用代碼:

$(document).ready(function(){ 
    $('#send').click(function(){ 
     Val.text('test', 1, 'email', 10, 50); 
     Val.send(); 
    }); 

    $('#test').bind('change', Val.text); 
    $('#test').trigger('change', ['test', 1, 'email', 10, 50]); 
}); 

我知道我還沒有使用的表達式,但我會一次我看到它的工作。

欣賞所有幫助...

謝謝!

+0

當你說你不能讓它運行時,究竟發生了什麼? – 2010-12-06 10:03:12

回答

0

我做到了。一旦腳本正常工作,不需要觸發器。我只能在變更事件中調用。

$('#emailID').change(function(){ 
    Val.text('emailID', 1, 'email', 10, 100); 
}); 

無論如何感謝大家的幫助。