默认将 PHP 变量解析为 Jquery UI Datepicker

Posted

技术标签:

【中文标题】默认将 PHP 变量解析为 Jquery UI Datepicker【英文标题】:parseing a PHP Variable to Jquery UI Datepicker as default 【发布时间】:2015-09-10 06:12:57 【问题描述】:

我已经在谷歌上搜索了一段时间,简要的背景知识我是 php 的新手和 JQuery UI 的新手。我很欣赏我正在使用的 PhP 现在已被贬低,但是我正在“修复”一个 mysql 数据库 UI 以使我的生活更轻松(从长远来看)因此我首先自学 PhP 的原因(工作没有任何现金都可以修复它,并且响应是哦,使用excel电子表格重写整个薄。 我能找到的最接近的修复方法是How can I pass PHP variable to Datepicker in jQuery?

然而没有快乐。我使用它来创建/读取和删除没有问题我的问题来自更新,因为现有数据没有分配给要输入的 JQuery id。 我使用的变量可以填充到文本框,而不是发布的值.....grrr! 我的整个脚本有 1900 行长,所以希望发布相关的内容就足够了。 我的标头 Jquery 代码和我的表单中的更新代码:

enter code here

<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness    /jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<!-- 3 datepicker javascripts -->
<script> language ="javascript">
$(function() 
$( "#datepicker" ).datepicker();
$('#userDatedr').datepicker(dateFormat:"dd MM yy",
            altField: '#drDate', altFormat: 'yy-mm-dd');
                //Set javascript date to php variable 
            var phpDate = "<?php echo $grab_staff[driver_exp]?>";
);


                $("#drDate").datepicker("setDate",phpDate);
</script>
<?php
<body>
<html>

print("<tr><td id='employee_left'>Drivers Licence:</td><td>
            <b>Number:</b>&nbsp;<input type='text' name='driver_num'            value='$grab_staff[driver_num]' maxlength='15'     /><br />");
            print("<tr><td id='employee_left'><b>Expiry:</b>&nbsp;</td><td>    <input type= 'text' value='$grab_staff[driver_exp]'     id=\"userDatedr\" maxlength='10'><input type=\"text\" id=\"drDate\"     name=\"drDate\">");

?>
</body>
</html>

为了澄清,如果我选择一个新日期,日期选择器在编辑时工作,我希望能够从数据库中重新发布现有日期并进行更新,而无需用户再次从保留的日期选择器日历中选择日期请注意,此表格有 4 个不同的日期字段,出生日期、驾驶执照到期日期、原始入职日期和最后入职日期。代码上方的当前字段是指驱动程序的到期日期。一旦我完成故障查找,发布的值将从文本更改为隐藏,因此目前它提供两个字段,第一个字段显示来自日期库的原始日期,如果使用 datepicker 编辑,第二个字段将更改为新日期如果未使用日期选择器更改日期,则将隐藏的文本框为空白。 任何帮助/建议将不胜感激 干杯

杰斯

【问题讨论】:

【参考方案1】:

&lt;script&gt; language = "javascript"&gt; 应该类似于 &lt;script type="text/javascript"&gt; code here &lt;/script&gt;

$(function() your code here 不知道你想在这里做什么,但我会把它放在一个准备好的文件中,如下所示:

也不要在你发送给日期选择器的对象中声明你的变量,最好在上面做

$(document).ready(function() 
        //Set javascript date to php variable 
        var phpDate = "<?php echo $grab_staff[driver_exp]?>";
        $( "#datepicker" ).datepicker();
        $('#userDatedr').datepicker(dateFormat:"dd MM yy",
            altField: '#drDate', altFormat: 'yy-mm-dd');
        );
        $("#drDate").datepicker("setDate",phpDate);
);

但也许首先检查控制台(按 f12 单击控制台)查看出现的错误。

我建议不要尝试让整个工作一次完成尝试部分地完成它,例如首先看看你是否可以像这样在 javascript 中提醒 php var:

<script type="text/javascript"> 
     var phpDate = "<?php echo $grab_staff[driver_exp]?>";
     alert(phpDate);
</script>

如果您看到正确的日期,可以进入下一步检查日期选择器是否正常工作,首先像这样测试第一个:

<script type="text/javascript>
    $(document).ready(function() 
        $( "#datepicker" ).datepicker();
    );
</script>

如果这可行,请进入下一步并像这样工作,这样您就不必一次修复 300 个错误,但您可以使其部分工作更容易

【讨论】:

herriekrekel,非常感谢您花时间回复。按照您的故障查找信息,我发现该变量为空。我是否应该将此脚本放在其他地方,因为直到该页面的 PhP 脚本中途才声明变量值? PS datepicker 本身的工作原理包括发布到数据库 @Jase 好的,所以现在您知道 php 数组元素 $grab_staff[driver_exp] 可能不起作用。 driver_exp 是您在 php 中某处定义的常量吗?或者您是否试图获取关联数组的元素,在这种情况下它应该是 $grav_staff['driver_exp'] 或者如果 driver_exp 是一个变量,它应该是 $grab_staff[$driver_exp];如果您显示创建此数组的 php 部分,它将有所帮助 @Jase 你能添加你填充这个数组的部分吗,放一个 var_dump($grab_staff);死();如果没有实际填充它的部分,看看它返回的内容并不能真正帮助你哪里出错:P 'driver_exp' 是关联数组的一个元素,我已更改代码以添加单引号,但运气不佳。我已经使用警报(phpdate)重新加载了页面;它返回一个空的 OK 弹出窗口(我假设应该回显变量。 @Jase 应该正确,这就是为什么您需要找出为什么此数组中的元素为空的原因这是在您的 php 代码中,而不是 javascript 查找数组应将值放入的部分并放一个 var_dump($grab_staff);死();看看它会返回什么而不是从那里去【参考方案2】:

我已经编辑了我原来的代码行:

print("<tr><td id='employee_left'><b>Expiry:</b>&nbsp;</td><td>    <input type= 'text' value='$grab_staff[driver_exp]'     id=\"userDatedr\" maxlength='10'><input type=\"text\" id=\"drDate\"     name=\"drDate\">");

print("<tr><td id='employee_left'><b>Expiry:</b>&nbsp;</td><td><input type= 'text' value='$grab_staff[driver_exp]' id=\"userDatedr\" maxlength='10'><input type=\"text\" value='$grab_staff[driver_exp]' id=\"drDate\" name=\"drDate\">");

它现在可以工作了,感谢@herriekrekel 的所有建议,我在此过程中学到了一些东西,请注意我使用的是 php 5.3.3,所以不知道这个答案与其他用户的相关性有多大。

除此之外,我还发现没有必要在头文件中声明 php 变量作为脚本的一部分,我注释掉了所有建议的附加代码,它按预期运行。只要在输入代码中声明了 php 变量,它就可以按要求工作;注意第二个文本输入需要在生产环境中更改为隐藏。 干杯

杰斯

【讨论】:

以上是关于默认将 PHP 变量解析为 Jquery UI Datepicker的主要内容,如果未能解决你的问题,请参考以下文章

jquery-ui,如何将光标恢复为默认值

PHP 将PHP date()样式dateFormat转换为等效的jQuery UI datepicker字符串

在 jquery 中发布数据时如何使用 jquery UI 使 post.php 弹出消息

将PHP date()样式的dateFormat转换为等效的jQuery UI datepicker字符串

如何将多个 PHP 变量传递给 jQuery 函数?

将 jquery 变量转换为 php 变量