2016-03-28 86 views
1

我在opencart的视图文件中工作。我有两个文本框分别设置日期和时间。我有一个复选框,它的值为1时检查和0时不检查。我想要的是,日期和时间字段应该隐藏,如果上面的复选框被选中(直到现在)。如果复选框未选中,将这些字段显示为他们现在(完成到现在)。 当前代码:如何在HTML中调用JS函数

HTML

<tr id="row_ship_date"> 
    <td> 
     Shipment Date: 
    </td> 
    <td> 
     <input type="text" id="ship_date" name="ship_date" class="date" onchange="getServices();" /> 
    </td> 
</tr> 
<tr id="row_ship_time"> 
    <td> 
     Shipment Time: 
    </td> 
    <td> 
     <input type="text" id="ship_time" name="ship_time" class="time" /> 
    </td> 
</tr> 

<?php 
    if (isset($current_date_shipment) && $current_date_shipment == 1) // check box value check{?> 
     <script type="text/javascript"> 
      document.getElementById('row_ship_date').style.display='none'; 
      document.getElementById('row_ship_time').style.display='none'; 
      getServices(); 
     </script> 
    <?php } 
?> 

JS:

function getServices()  { 
    alert('test'); 
    var ship_date = $('#ship_date').val(); 
    var ship_time = $('#ship_time').val(); 
    // code so on.. 
} 

当前的问题

1)我无法呼叫getServices()如果复选框检查是真(的PHP检查if声明),因为如果它的false它得到呼叫onchange事件的日期并且工作正常。

2)我怎么能为这两个文本字段分别设置当前日期和当前时间,如果此功能下if声明(当两个字段都隐藏)调用,这样的:

function getServices()  { 
    alert('test'); 
    var ship_date = new Date(); 
    var ship_time = currentTime(); 
    // code so on.. 
} 
+0

检查您的浏览器控制台何时PHP条件为真..有可能是JS错误。 –

+0

如果你的PHP条件返回true,那么代码似乎没有问题(不考虑评论声明//复选框值检查,它也评论大括号“{”) –

+0

@ techie_28但为什么我的函数没有得到称为(JS函数)。 –

回答

-1

我猜你的语法有一个问题。你不能在PHP脚本中调用Javascript。这里本部分:

<?php if (isset($current_date_shipment) && $current_date_shipment == 1) // check box value check{?> 
<script type="text/javascript"> 
document.getElementById('row_ship_date').style.display='none'; 
document.getElementById('row_ship_time').style.display='none'; 
getServices(); 
// <---- notice also here you have no </script> tag :) 
<?php }?> 

我只是指出一些小的语法问题:)

+0

我的不好,其实我有这个结束标签编辑我的阙。我应该如何调用 –

+0

我看到,如果您希望允许PHP和Javascript之间的通信,您必须能够使用AJAX。这是您可以允许PHP和JAVASCRIPT之间进行通信的唯一方式。 –

0

该问题可能是因为你试图声明之前调用的函数。 试着把你的代码包装在里面

<script> 
// self executing function 
(function() { 
    // put your code here 

})(); 
</script> 

即;

<?php 
      if (isset($current_date_shipment) && $current_date_shipment == 1) // check box value check 
    {?> 
      <script type="text/javascript"> 
        (function() { 
      document.getElementById('row_ship_date').style.display='none'; 
      document.getElementById('row_ship_time').style.display='none'; 
      getServices(); 
     })(); 
     </script> 
0

试试这个:

<?php 
      if (isset($current_date_shipment) && $current_date_shipment == 1) { 
       $now = new DateTime(); 
       $date = $now->format('Y-m-d'); 
       $time = $now->format('H:i'); 
?> 
       <script type="text/javascript"> 
        $('#row_ship_date,#row_ship_time').hide(); 
        $('#ship_date').val(<?php echo $date; ?>);// this should set date value,Use appropriate PHP function. 
        $('#ship_time').val(<?php echo $time; ?>); // this should set time value,Use appropriate PHP function. 
        getServices(); 
       </script> 
      <?php } ?> 

你不需要隐藏字段设置任何值,但可以在上面使用jQuery .val()集,如图所示。

只需用包含相应值的PHP变量替换“新的日期/时间值字符串”或使用适当的PHP函数来获取它。

还要确保jQuery &您的函数定义getServices存在于您的PHP条件执行之前。

+0

我尝试了ur代码,并在控制台“Uncaught SyntaxError:missing”后出现了错误,在日期时间变量的参数列表“<?php $ now = new DateTime(); $ date = $ now-> format(' Ym-d'); $ time = $ now-> format('H:i');?>“ –

+0

你是否删除了你自己的评论//复选框值检查在执行之前?检查我对编辑的答案。 –