1
  function validatedate(inputText) { 
    var thsid = $(inputText).attr('id');
    var dateformat = /^(0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])[\/\-]\d{4}$/; 
  }

これは私の一般的なjsメソッドです[不完全]ですonblur="validatedate(this)"が、無効な日付も受け入れます

textbox.onblurJavaScriptを使用して日付を検証する必要があるため、jspに1つの日付ピッカーがあります

これらはルールです

  1. mm/dd/yy 形式
  2. mm は 31 を超えてはなりません
  3. dd は 12 を超えてはなりません
  4. すべての日付ピッカーに共通の方法である必要があります
  5. 指定された入力が無効な場合..アラートと空の日付ピッカーを与える必要があります........
4

3 に答える 3

2

変化する:

onblur="validatedate(this)"

に:

onblur="validatedate(this.value);"

this入力のテキスト値ではなく、入力 DOM 要素自体が含まれます。

また、あなたのvalidatedate()機能は何もしていないようです。フォームの処理を停止する戻り値、アラート、または何もありません。関数自体のスニペットのみを提供したのは当然だと思います。

于 2013-10-30T13:26:02.360 に答える
0

これで私のメソッドの準備が整いました..stackoverflowの助けを借りて:

  function validatedate(inputText)  
{ 
var thsid=$(inputText).attr('id');
var classname=$(inputText).attr('class');
   var classstr=classname.split(" ");
var ret=true;
var dateformat = /^(0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])[\/\-]\d{4}$/;  
// Match the date format through regular expression  
if(inputText.value.trim()!="")
{
if( inputText.value.trim().match(dateformat))  
 {  
  // document.form1.text1.focus();  
   //Test which seperator is used '/' or '-'  
   var opera1 = inputText.value.split('/');  
   var opera2 = inputText.value.split('-');  
  lopera1 = opera1.length;  
 lopera2 = opera2.length;  
  // Extract the string into month, date and year  
   if (lopera1>1)  
    {  
  var pdate = inputText.value.split('/');  
  }  
  else if (lopera2>1)  
  {  
  var pdate = inputText.value.split('-');  
  }  
 var mm  = parseInt(pdate[0]);  
 var dd = parseInt(pdate[1]);  
 var yy = parseInt(pdate[2]);  
  // Create list of days of a month [assume there is no leap year by default]  
   var ListofDays = [31,28,31,30,31,30,31,31,30,31,30,31];  
  if (mm==1 || mm>2)  
  {  
  if (dd>ListofDays[mm-1])  
  {  
  alert('Invalid date format!');
 $(inputText).focus();
  inputText.value="";
   ret=false;
  return false;  
  }  
 }  
 if (mm==2)  
  {  
 var lyear = false;  
 if ( (!(yy % 4) && yy % 100) || !(yy % 400))   
  {  
 lyear = true;  
 }  
 if ((lyear==false) && (dd>=29))  
  {  
  alert('Invalid date format!'); 
  $('#'+thsid).focus();
   inputText.value="";
   ret=false;
  return false;  
 }  
 if ((lyear==true) && (dd>29))  
 {  
 alert('Invalid date format!');  
         $('#'+thsid).focus();
 inputText.value="";
  ret=false;
   return false;  
 }  
  }  
  }  
  else  
   {  
   alert("Invalid date format!");  
    $('#'+thsid).focus();
 inputText.value="";
    ret=false;
  return false;  
       }
 }
于 2013-12-13T05:16:24.447 に答える