2017-04-02 14 views
1

私はAjaxを通して2つのカレンダー値を渡しました。問題は、日付を選択する2回目の試行の後にのみ、日付値が渡され、最初の試行値を渡していることです!Ajaxで日付値を渡す

例として現在の結果:

最初の試行で私が選択されます:2017年3月1日

selectvaluedsの= ''

第二の試行では、私が選択することになります。 2015-05-30

「= 2017-03-01」

重要: 計算のために私はまず#startにcalendarの値をコピーしてから#startをAjaxを通してPHPコードに渡す必要があります。 Javascriptを:

$('#calendar').change(function() { 
    $('#start').val($(this).val()); 
}); 
    $('#calendar’).change(function(){ 
      var selectvalueds = $('#start').val(); 
      Unit_id.html('<option value="">Loading...</option>'); 
      if (selectvalueds == '') 
      {Unit_id.html(initial_Unit_html);} 
      else 
      { 
       $.ajax({ 
        url: 'index.php', 
        data:'option=com_myapp&task=getUnitsHTML&dsvalue='+selectvalueds, 
        success: function(output) { 
         Unit_id.html(output); 
        }, 
        error: function (xhr, ajaxOptions, thrownError) { 
         alert(xhr.status + ' ' + thrownError); 
        } 
       }); 
      } 
     }); 

PHP:

public function getUnitsHTML() { 
     $jinput = JFactory::getApplication()->input; 
     $db = JFactory::getDbo(); 
     $query = $db->getQuery(true);   
     $sdate = date_create($jinput->get ('dsvalue')); 
     $mystartdate = date_format($sdate, "Y-m-d");   
     echo '<div>'.$mystartdate.'</div></br>';    
     } 

答えて

0

あなたは#calendarに2つの変更イベントを結合しています。代わりに、このような何かを試してみてください。

function yourCalculation(start_val) { 
    execute_whatever_you_want; 
}; 
$('#calendar').change(function() { 
    value = $(this).val() 
    yourCalculation(value); 

    var selectvalueds = value; 
    Unit_id.html('<option value="">Loading...</option>'); 
    if (selectvalueds == '') { 
     Unit_id.html(initial_Unit_html); 
    } else { 
     $.ajax({ 
       url: 'index.php', 
       data:'option=com_myapp&task=getUnitsHTML&dsvalue='+selectvalueds, 
       success: function(output) { 
        Unit_id.html(output); 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
        alert(xhr.status + ' ' + thrownError); 
       } 
     }); 
    } 
}); 

これが第1の値を取得しますが、値が空でないと、それは空ではない場合、Ajax呼び出しを開始するかどうかをチェックし、ロードオプションを追加し、あなたの計算機能を実行します。

関連する問題