2013-07-13 3 views
2

у меня есть этот PHP переменную установить в Joomla 2.5 шаблон файлаэхо переменной PHP внутри функции JQuery

$datestart = date('Y-m-d g:i', strtotime("+1 week")); 
$dateend = date('Y-m-d g:i', strtotime("+30 days")); 

и когда я эхо этого

<?php echo json_encode($datestart); ?> 

внутри страницы PHP работает. Я пытаюсь включить эту переменную внутри функции JQuery компонента RS Form

$formLayout .= "\n".'<script type="text/javascript" src="'.JURI::root(true).'/components/com_rsform/assets/calbs.js"></script>'."\n"; 

в файл .js я есть

jQuery(function() { 
jQuery("#datetimepicker").datetimepicker({ 
format: "dd MM yyyy - HH:ii P", 
showMeridian: true, 
autoclose: true, 
startDate: <?php echo json_encode($datestart); ?>, 
endDate: <?php echo json_encode($dateend); ?>, 
minuteStep: 15, 
pickerPosition: "bottom-left" 

}); 
}); 

Но это не работает, и показывает синтаксическую ошибку для PHP эхо линия. Как я могу это решить?

+1

В js-файле вы не можете ввести php-код. – Ravi

+0

какая ошибка? –

+0

Если ваш файл JavaScript не обрабатывается PHP, то '' не будет заменен. Отсюда и синтаксическая ошибка. –

ответ

5

Вы должны присвоить значения PHP первым в Js переменных в .php файле

<script> 
START_Date='<?php echo json_encode($datestart); ?>'; 
END_Date='<?php echo json_encode($dateend); ?>'; 

</script> 

Теперь в ваших JS файл

jQuery(function() { 
    jQuery("#datetimepicker").datetimepicker({ 
     format: "dd MM yyyy - HH:ii P", 
     showMeridian: true, 
     autoclose: true, 
     startDate: START_Date, 
     endDate: END_Date, 
     minuteStep: 15, 
     pickerPosition: "bottom-left" 

    }); 
}); 

ИЛИ включать код JS в файле PHP, то вы можете непосредственно использовать PHP переменные внутри ваших JS, как это:

jQuery(function() { 
    jQuery("#datetimepicker").datetimepicker({ 
     format: "dd MM yyyy - HH:ii P", 
     showMeridian: true, 
     autoclose: true, 
     startDate: '<?php echo json_encode($datestart); ?>', 
     endDate: '<?php echo json_encode($dateend); ?>', 
     minuteStep: 15, 
     pickerPosition: "bottom-left" 

    }); 
}); 
+0

Спасибо, назначив ему сначала переменные js. –

1

Привет Вы не можете использовать PHP-код в js-файле. сохранить значение в переменной javascript, а затем использовать эту переменную в вашей функции jquery.

0

попробуйте этот код

<input type="hidden" id="startdate" value="<?php echo json_encode($datestart); ?>"/> 
<input type="hidden" id="enddate" value="<?php echo json_encode($dateend); ?>"/> 



jQuery(function() { 
var start = jQuery("#startdate").val(); 
var end= jQuery("#enddate").val(); 
jQuery("#datetimepicker").datetimepicker({ 
    format: "dd MM yyyy - HH:ii P", 
    showMeridian: true, 
    autoclose: true, 
    startDate: start, 
    endDate: end, 
    minuteStep: 15, 
    pickerPosition: "bottom-left" 
}); 
}); 
0
you should do it this way: 
<?php 

$datestart = date('Y-m-d g:i', strtotime("+1 week")); 
$dateend = date('Y-m-d g:i', strtotime("+30 days")); 

?> 

<input id="datestart" type="hidden" name="datestart" value="<?php echo $datestart; ?>"> 
    <input id="dateend" type="hidden" name="dateend" value="<?php echo $dateend; ?>"> 

    <script> 
     var datestart = document.getElementById('datestart').value; 
     var dateend = document.getElementById('dateend').value; 

     jQuery(function() { 
jQuery("#datetimepicker").datetimepicker({ 
format: "dd MM yyyy - HH:ii P", 
showMeridian: true, 
autoclose: true, 
startDate: datestart, 
endDate: dateend, 
minuteStep: 15, 
pickerPosition: "bottom-left" 

}); 
}); 
    </script>  
+0

этот метод работал тоже, но я не хотел включать скрытый тип ввода –

1

Вы можете просто сохранить это значение в скрытом поле, а затем получить его по значению идентификатора в к .js файле.

Смежные вопросы