2016-11-17 13 views
-2

私は自分のブログにイベントカレンダーを持っています。クリックイベント以外の私の期待通りに働いています。クリックして次のまたは前のリンクの月がそのデータを変更しないためです。通常は前のリンクをクリックすると前の月にレンダリングされますが動作しません。次と同じ。の解き方?リダイレクトを防ぐことができますhref='#'へのhrefを設定してくださいjqueryは、ページ更新なしのクリックイベントでデータをロードします。

[カレンダー]

<dl class="data"> 
    <dt>Archive</dt> 
    <dd class="calendar"> 
     <?php 
      date_default_timezone_set("Asia/Dhaka"); 
      if(!isset($_REQUEST['month'])){$month = date("m");}else{$month = $_REQUEST['month'];} 
      if(!isset($_REQUEST['year'])){$year = date("Y");}else{$year = $_REQUEST['year'];} 
      if(!isset($_REQUEST['day'])){$day = date('d');}else{$day = $_REQUEST['day'];} 
      $timestamp = mktime (0, 0, 0, $month, 1, $year); 
      $monthName = date("F", $timestamp); 
      $prev_year = $year; 
      $next_year = $year; 
      $prev_month = $month-1; 
      $next_month = $month+1; 
      if($prev_month == 0){$prev_month = 12;$prev_year = $year - 1;} 
      if($next_month == 13){$next_month = 1;$next_year = $year + 1;} 
      $prev_month = str_pad($prev_month, 2, '0', STR_PAD_LEFT); 
      $next_month = str_pad($next_month, 2, '0', STR_PAD_LEFT); 
     ?> 
     <div class="table"> 
      <div class="tr caption"> 
       <div class="th L"> 
        <a id="cprev" href="javascript:void(0);">&lsaquo;</a> 
       </div> 
       <div class="th monyer"><?php echo($monthName.'-'.$year); ?></div> 
       <div class='th R'> 
        <a id="cnext" href="javascript:void(0);">&rsaquo;</a> 
       </div> 
      </div> 
      <div class='thead'> 
       <div class="td">S</div> 
       <div class="td">M</div> 
       <div class="td">T</div> 
       <div class="td">W</div> 
       <div class="td">T</div> 
       <div class="td">F</div> 
       <div class="td">S</div> 
      </div> 
      <?php 
       $monthstart = date("w", $timestamp); 
       $lastday = date("d", mktime (0, 0, 0, $month + 1, 0, $year)); 
       $startdate = -$monthstart; 
       //Figure out how many rows we need. 
       $numrows = ceil (((date("t",mktime (0, 0, 0, $month + 1, 0, $year)) 
       + $monthstart)/7)); 
       //Let's make an appropriate number of rows... 
       for($k = 1; $k <= $numrows; $k++){ 
      ?> 
      <div class="tr days"> 
      <?php 
       //Use 7 columns (for 7 days)... 
       for ($i = 0; $i < 7; $i++){ 
        $startdate++; 
        $startdate = str_pad($startdate, 2, '0', STR_PAD_LEFT); //Make dates leading zero 
        if($startdate <= 0){//If we have a blank day in the calendar. 
      ?> 
      <div class="td L"> 
       <?php echo("&nbsp;");?> 
      </div> 
      <?php }elseif($startdate > $lastday){echo('<div class="td R">&nbsp;</div>');}else { 
       if(in_array($year.'-'.$month.'-'.$startdate, $dates) && $startdate == date("d") && $month == date("m") && $year == date("Y")){ ?> 
      <div class="td today"> 
       <span class="triangle-up-left"></span> 
        <a href="blog/archives/<?php echo($year.'-'.$month.'-'.$startdate); ?>"><?php echo($startdate); ?></a> 
      </div> 
      <?php 
      } elseif($startdate == date("d") && $month == date("m") && $year == date("Y")){?> 
      <div class="td today"><?php echo($startdate); ?></div> 
      <?php } else { ?> 
      <?php if(in_array($year.'-'.$month.'-'.$startdate, $dates)) { ?> 
      <div class="td days"> 
       <span class="triangle-up-left"></span> 
       <a href="blog/archives/<?php echo($year.'-'.$month.'-'.$startdate); ?>"><?php echo($startdate); ?></a> 
      </div><?php }else{ ?> 
      <div class="td days"><?php echo($startdate); ?></div><?php }?> 
      <?php } } } ?></div><?php } ?> 
     </div> 
    </dd> 
</dl> 

<script> 
    var maxPages = {{ page.last }}; 
    var Pmonth = <?php echo($prev_month);?>; 
    var Pyear = <?php echo($prev_year);?>; 
    var Nmonth = <?php echo($next_month);?>; 
    var Nyear = <?php echo($next_year);?>; 
</script> 

[jqueryの]

$('#cprev').click(function(e){ 
    e.preventDefault(); 
    var pmonth = Pmonth; 
    var pyear = Pyear; 
    var url = 'http://localhost/phalcon3/blog?month='+pmonth+'&year='+pyear; 
    $.post(url,{pmonth:"pmonth",pyear:"pyear"},function(){ 

    }); 
}); 
+2

あなたはplsは確認することができますは、JavaScriptのエラーいずれかがエラーのない –

+0

を前のリンクをクリックするか後が発生しています –

答えて

1

また、あなたは、デフォルトのアクションを防ぐために、あなたのjqueryの関数の最後にfalseを返す必要があります:

$('#cprev').on('click', function(e){ 
    var pmonth = Pmonth; 
    var pyear = Pyear; 
    var url = 'http://localhost/phalcon3/blog?month='+pmonth+'&year='+pyear; 

    $.ajax({ 
     type:"POST", 
     url: url 
     data: {pmonth:"pmonth",pyear:"pyear"}, 

     success: function(result){ 
      console.log(result); 
     }, 
     error: function(){ 
     } 
    }); 

    return false; 
}); 
+1

hrefをハッシュに設定すると、戻りfalseが設定されている場合は、リンクがクリックされたときにユーザーがページの先頭に移動します( – winseybash

+2

)。歓声もあまりにも私の答えをcopypastedことがあります.. – atoms

+3

@ winseybash必ずしも真実! –

0

e.preventDefault()は常にページのリフレッシュを停止しません。

ページの再読み込みを停止する必要がありますので、のようなあなたのjQueryのクリックハンドラの最後にreturn falseを追加します。

$('#cprev').click(function(e){ 
    e.preventDefault(); 
    var pmonth = Pmonth; 
    var pyear = Pyear; 
    var url = 'http://localhost/phalcon3/blog?month='+pmonth+'&year='+pyear; 

    $.post(url,{pmonth:"pmonth",pyear:"pyear"},function(){ 

    }); 

    return false; 
}); 
+0

'e.preventDefault()'がうまくいかないのはなぜですか? – jeroen

+0

私はe.preventDefault()に問題はありません。その働き。また、ページをリフレッシュしないが、希望のデータがロードされていない –

+1

@babymachineryあなたの質問を書き直すことを考えてください。あなたの問題が何であるかははっきりしていません。 – winseybash

関連する問題