2017-04-02 115 views
1

我有兩個通過Ajax傳遞我的日曆值。問題是,日期值只有在第二次嘗試選擇日期後纔會傳遞,並且它正在傳遞第一個嘗試值!通過Ajax傳遞日期值

當前結果作爲例子:

在第一次嘗試,我將選擇:2017年3月1日

selectvalueds = ''

在第二次嘗試,我將選擇: 2015-05-30

Selectvalueds ='2017-03-01'

重要提示:! 由於一些計算,我必須先將日曆的值複製到#start,然後將#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

要綁定2個改變事件的#calendar。相反,嘗試這樣的事:

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); 
       } 
     }); 
    } 
}); 

這將首先獲得的價值,執行你的計算功能,然後添加加載選項,檢查值不爲空,如果它不爲空,啓動Ajax調用。