如何在HTML中调用JS函数

时间:2016-03-28 10:21:54

标签: javascript php jquery html checkbox

我在opencart的视图文件中工作。我有2个文本框,分别设置日期和时间。我有一个复选框,检查时其值为1,未选中时为0。我想要的是,如果选中上面的复选框,则应隐藏日期和时间字段(直到现在为止)。如果未选中复选框,请将这些字段显示为他们现在(直到现在)。 目前的代码:

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..
}

3 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

试试这个:

HashSet<int> serialNumAlreadyExisted = new HashSet<int>();

serialNumAlreadyExisted.Add(1);
serialNumAlreadyExisted.Add(2);
serialNumAlreadyExisted.Add(3);

var duplicateRows = 
    (from row in dt.AsEnumerable()
    where row.Field<int>("ID") == varID && 
          serialNumAlreadyExisted.Contains(row.Field<string>("SERIAL_NUMBER"))
   select row).ToList();

您不需要隐藏字段来设置任何值,但可以使用jQuery <?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 } ?> 设置如上所示。

只需在此处替换&#34;新的日期/时间值&#34;使用包含相应值的PHP变量或使用适当的PHP函数来获取它。

同时确保jQuery&amp;在PHP条件执行之前,您的函数定义.val()已存在。

答案 2 :(得分:-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 }?>

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