繁体   English   中英

提交Wordpress之前检查输入的广播ID

[英]Check input radio id before submit wordpress

那就是我现在所拥有的!

主题/ deliverHours.js:

更新

   window.onload = function () {
    getHour= new Date().toLocaleTimeString("en-US",{timeZone:"America/New_York",hour12: false});
    getDay= new Date().toLocaleTimeString("en-US",{timeZone:"America/New_York",hour12: false,weekday:'short'});
    day  = getDay.split(' ');
    arrayDate = getHour.split(':');
  document.getElementById('shipping_method_0_local_pickup8').onclick=function() {
        if(document.getElementById('shipping_method_0_local_pickup8').checked){
            console.log('local Pickup!');
            console.log(getDay);
            if(!(arrayDate[0] >= 7 && arrayDate[0] <= 16 && day[0] == 'Sun')) {
                        document.getElementById('msg').innerHTML = "Sorry,We are Closed";
              document.getElementById('checkOut').disabled = true
                }else{
          document.getElementById('checkOut').disabled = false
          console.log('enjoy your food');
        }
        }
    } 

    document.getElementById('shipping_method_0_flat_rate1').onclick=function(){
        if(document.getElementById('shipping_method_0_flat_rate1').checked){
            console.log('flat rate!');
            console.log(getDay);

          if(!(arrayDate[0] >= 7 && arrayDate[0] <= 16 && day[0] == 'Sun')) {
                      document.getElementById('msg').innerHTML = "sorry,we are closed. "
                    document.getElementById('checkOut').disabled = true
                  }else{
          document.getElementById('checkOut').disabled = false
          console.log('enjoy your food');
        }
}
}
}

主题/ function.php:

function deliver_business_hours(){
   wp_register_script('deliverHours', plugins_url('deliverHours.js'), array(),'1.0', true);

wp_enqueue_script('deliverHours');
}




add_action( 'wp_enqueue_script', 'deliver_business_hours');

Lorem Ipsum只是印刷和排版行业的伪文本。 自1500年代以来,Lorem Ipsum一直是行业的标准伪文本,当时一位不知名的打印机拿起一个厨房,将其打乱成一本样本书。 这个文字没用...

那应该工作对吗?

不幸的是,这对于初学者来说是一个普遍的问题。 让我们来看一下为什么这行不通:

  1. 当访问结帐页面时,用户的浏览器将使用任何相关的cookie等向服务器发送请求。
  2. 服务器开始执行php(又名WordPress),最终将执行您的小功能。
  3. 您的echo会将字符串中的所有内容注入到HTML中,然后将其发送回用户。
  4. 用户的浏览器会看到javascript并开始执行。 在javascript中,浏览器看到了这个奇怪的标记<?php> 浏览器不知道如何执行php。 他们的默认设置是简单地忽略他们不了解的任何内容。 这就是为什么它不起作用的原因,通过回显php代码,您已经告诉浏览器执行它不了解的操作。

PHP是一种服务器端语言。 如果要编写php,则必须在HTTP请求过程中由服务器执行。 如果您需要在客户端执行某些操作,则必须使用所有JavaScript编写。

因此,这给您两个选择:

  1. 重写您要由JS处理的所有逻辑。
  2. 编写最少量的JS,以回调服务器以用PHP处理。

就您而言,我认为可以使用少量的javascript来通知客户您的交货​​时间。


关于编程风格的注释:

确实不应该回显任何html标签,尤其是<script><style>标签。 您应该有单独的.js和.css文件,然后将它们包含到html文档中。 WordPress提供了一个方便的功能: wp_enqueue_script ,它将以所有适当的方式为您完成此操作。


更新:

对于PHP:您需要将单选按钮放入提交的表单中。 可能使用适用于woocommerce的钩子/过滤器。 之后,可以在提交时从$_POST['shipping_method']访问该值。

对于JS: 是一个有关从浏览器获取时区特定日期时间的问题。 看来这是一个非常本地的网络商店,所以我要提到实例化javascript的Date对象会获取当前的本地日期时间。 所以:

var now = new Date();
var hour = now.getHours();
var day = now.getDay();

因为您一直在php中使用它们,所以应该使您时日不散。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM