2012-02-21 10 views
0

私は2つの日付を比較しています。私のコードはこのようになります。Jqueryの文字列の比較?

jQuery('.newAppointment a.ui-state-default').click(function() { 
    var date = jQuery(this).parent().attr('title'); 
var d = jQuery.datepicker.parseDate('dd/mm/yy',date.toString()); 
    alert(d); 
    var today = new Date; 
    var t = jQuery.datepicker.parseDate('dd/mm/yy',today.toString()); 
    alert(t) 
    if(t > d){ 
    url = "https://stackoverflow.com/users/" + user_id + "/events/new?type=Surgery"+"&day=" + escape(date);; 
    window.location = url; 
    }else{ 
    alert("you cannot add appointment to past dates"); 
    } 
}); 

ファイヤーバグでエラーが発生しています。 未知の例外:位置0に番号がありません 誰かが私が間違っていることを教えていただけますか?

+0

缶Firebugのエラーが発生した行を教えてください。 – nnnnnn

答えて

3

を使用して日付を比較することができます はparsedata()といくつかの問題があるかもしれfine manual

はparsedata(フォーマット、値、設定)
[...]
多くの例外がスローされることがあります:

  • 「位の欠落数NN」形式は、その後ではない数値を示した場合は、だからあなたのエラーがjQueryの-UIから来ている

を見つけました。 date.toString()から取得するフォーマットは、ブラウザとロケールによって異なりますが、常にそれがdd/mm/yyであると予想する理由はありません。

あなたdateはすでに文字列であると知られている形式(おそらくdd/mm/yy)におけるので、あなたはこれを行うことができるようになります。

var d = jQuery.datepicker.parseDate('dd/mm/yy', date); 

は日付を取得します。次に、あなただけでtodayを取得することができます。

var today = new Date; 

とそれらを直接比較:

if(today > d) 

をあなたが時間、分、秒を捨てたい場合:

var now = new Date; 
// Or set milliseconds, seconds, minutes, and hours to zero. 
var today = new Date(now.getFullYear(), now.getMonth(), now.getDate()); 
if(today > d) 
0

はあなただけからわずか

if (today > date){...} 
+0

日付オブジェクトは直接比較することができます –

+0

私はそれを試してみましたが、毎回それを試してみました。私のコードは次のようになります: jQuery( '。newAppointment a.ui-state-default')。click(function(){ var (今日>日付){ url = "/ users /" + user_id + "/ events /(ユーザーの現在の日付)=var today = new Date(); の場合は今日の日付= jQuery(this)新しいタイプ?=手術= "+"&day = "+エスケープ(日付);; window.location = url; } else { アラート("過去の日付にアポイントを追加できません "); } }); –