我有两个通过Ajax传递我的日历值。问题是,只有在第二次尝试选择日期后才传递日期值,并且它正在传递第一个尝试值!!
当前结果为例:
首次尝试时,我会选择: 2017-03-01
selectvalueds =''
第二次尝试我会选择: 2015-05-30
Selectvalueds ='2017-03-01'
重要: 由于一些计算,我必须首先将日历的值复制到#start,然后通过Ajax将#start传递给我的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 :(得分: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);
}
});
}
});
首先获取值,执行计算函数,然后添加Loading选项,检查值是否为空,如果不为空,则启动Ajax调用。