2009-08-07 25 views
2

まず、3番目のJavascript質問を何日も作成することについてお詫び申し上げます。私はこのプロジェクトのこの分野で自分自身をプッシュしようとしています。私の研究とここであなたの素晴らしい助け、特にredsuqareのおかげでかなり良いレート!Javascript/JQueryを使用した時間検証(および比較)

人が時間を入力できるテーブルがあり、入力が99:99の形式であることを確認するマスクがあります。これは素晴らしいですが、理想的にはそれを23:59を超えてはいけません!

ここで私が持っているコードは、TR

$.each($('#hoursavailable tr td :checkbox'), function() { 

    var $this = $(elem); // cache the object 
    var $row = $this.closest('tr'); // find the nearest table row 
    if($this.is(':checked')) { 
     // do nothing! 
    } else { 
     $row.each(':text'),function() { 
      var splittime = $(this).split(":"); 
      if(splittime[0] > 22 || splittime[1] > 58) { 
       alert('please enter a valid date'); return false; 
      } 
     } 
    } 
}); 

も/行ごとに2つの入力があることは注目に値するだろう...一緒に私ができる最善を石畳が、当然動作しない、現時点ではです - それは私が何とか2を比較することができれば最初の1が第二の前にあることを保証するために、絶対的に理想的で、それが現在のものよりも私を超え、さらに可能性が高く評価:(

おかげ

+0

更新された回答。 – redsquare

答えて

1

FOR-探しているものかもしれ以下に詳述する。

$("#hoursavailable :checked").each(function() { 
     var splittime = $(this).parents("tr").find(":text").val().split(":"); 
     if (splittime[0] > 22 || splittime[1] > 58) { 
      alert('please enter a valid date'); 
      return false; 
     }   
    }); 

私はあなただけの1つのテキストボックス(したがって.find(持っているものとしました「:テキスト」。親に)をあなたはクラスセレクタがあるというクラスを追加することが、心に留めて検討することもでき一緒に最大&形式をチェックするためにさまざまな方法から遅いあなたはしかし、前提は動作しますが、もう少し追加したい場合がありますので。

ここには検証は、ありません。

+0

多くの感謝!ちょうどこれを少し修正しました。 $( "#hoursavailable:text"){ \t \t $ this = $(this); //オブジェクトをキャッシュする var splittime = $ this.val()。スプリット(":"); IF(splittime [0]> 22 || splittime [1]> 58){ \t \t \t $ this.focus(); \t \t \t $ .jGrowl( '有効な日付を入力してください23:59以下の値を指定してください!!'、{ \t \t \t \tテーマ: '煙' \t \t \t}); \t \t \t RETVAL =偽;偽を返します。 } }); – Nick

3

たいあなたが必要とするのは、あなたのテキスト入力の周りをそれぞれ処理するので、値を取得して分割する必要があります。

$row.find(':text').each(function() { 
      var splittime = $(this).val().split(":"); 
      if(splittime[0] > 22 || splittime[1] > 58) { 
        alert('please enter a valid date'); return false; 
      } 
}); 

しかし、自分自身を再発明しますが、データの検証に対処するための正規表現式を設定することができますvalidate pluginに見ていない理由は、車輪を保存します。

でも私は手作りのローリングが良い学習曲線であることを感謝します。

+0

多くのおかげで、私はすぐに検証プラグインを見てみましょう。 val()btwが見つかりませんでした。私は 'alert(splittime [0]);を試しても、何もしなかったので、それぞれが動いているかどうかはわかりません。 - 痛みを残して申し訳ありません – Nick

0

合成。

var timeFieldValue = $(this).val(); 
    re = /^\d{1,2}:\d{2}([ap]m)?$/; 
    if(timeFieldValue != '' && !timeFieldValue.match(re)) { 
     alert("Invalid time format: " + timeFieldValue); 
     $(this).focus(); 
     return false; 
    } 
    var splittime = timeFieldValue.split(":"); 
    if(splittime[0] > 23 || splittime[1] > 59) { 
     alert('Please enter a valid time'); 
     return false; 
    } 
関連する問題