2

i have this PHP variable set in joomla 2.5 template file

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

and when i echo this

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

inside a php page it works. I'm trying to include this variable inside a jQuery function of the RS Form component

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

in the .js file i have

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"

});
 });

But it's not working and shows syntax error for the php echo line. How can i solve this ?

3
  • 1
    in js file you can not enter php code. Commented Jul 13, 2013 at 10:45
  • what error is it showing ? Commented Jul 13, 2013 at 10:46
  • If your JavaScript file is not processed by PHP, then the <?php ... ?> won't be replaced. Hence the syntax error. Commented Jul 13, 2013 at 10:49

5 Answers 5

7

You have to assign the php values first to js variables in .php file

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

</script>

Now in your js file

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"

    });
 });

OR include your js code in your php file then you can directly use php variables inside your js like this:

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"

    });
});
Sign up to request clarification or add additional context in comments.

Comments

1

Hi You can not use php code in js file. store value in javascript variable and then use this variable in you jquery function.

Comments

1

You can simply store this value into the hidden field and then get it by its id value in to the .js file.

Comments

0

try this code

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

Comments

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>    

1 Comment

this method worked too but i didn't want to include the hidden input type

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.