在php中使用jquery禁用输入框中的特定日期不起作用
Posted
技术标签:
【中文标题】在php中使用jquery禁用输入框中的特定日期不起作用【英文标题】:disabling particular date in input box using jquery in php not working 【发布时间】:2022-01-24 07:31:50 【问题描述】:我有一个 php 网站,有一个用户可以提交的表单,如果数据库中已经存在一些日期,我想禁用它们,所以我做了如下操作:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<input id="niy" name="idate" value=""/>
<?php
$queryusersz = "SELECT * FROM invoice";
$dbz = mysqli_query($con, $queryusersz);
while($row = mysqli_fetch_array($dbz))
$names[] = $row['idate'];
?>
<script>
var array = <?php $names ?>;
$('#niy').datepicker(
language:'TR',
beforeShowDay: function(date)
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [ array.indexOf(string) == -1 ]
);
</script>
<?php ?>
但是输入框不显示日期,我也没有在控制台中收到任何错误,谁能帮我解决这个问题,在此先感谢。
【问题讨论】:
试试:var array = ; @KHIMAJIVALUKIYA 我的问题是在单击该输入框时压延机根本没有出现 你添加了 jQuery UI JS 库吗?您需要为 DatePicker 添加 jQuery UI 库,而不仅仅是 JQuery 库 jsfiddle.net/3q0zkp2c @KHIMAJIVALUKIYA 我添加了 jquery cdn 和 datepicker cdn,我得到控制台错误 datepicker is not a function 【参考方案1】:对于 jQuery DatePicker,您需要添加 jQuery UI JS 和 CSS。
您需要遵循两件事:
-
不能直接在JS中写
var array = <?php $names ?>;
会报错,需要做JSON编码或者加引号。
例如:var array = <?php echo json_encode($names); ?>
或 var array = '<?php echo implode(",",$names); ?>'
-
您在代码中遗漏的另一件事是您没有为您在 JS 中使用的 PHP 变量添加 echo。
例如:现在你的代码是var array = <?php $names ?>;
,它没有回显,所以$name
的值在你回显之前不会存储在JS变量中。
更多参考代码如下:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<link href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/ui-lightness/jquery-ui.css" rel="stylesheet">
<input id="niy" name="idate" value=""/>
<?php
$queryusersz = "SELECT * FROM invoice";
$dbz = mysqli_query($con, $queryusersz);
while ($row = mysqli_fetch_array($dbz))
$names[] = $row['idate'];
?>
<script>
var array = '<?php echo implode(",",$names) ?>';
$('#niy').datepicker(
language:'TR',
beforeShowDay: function(date)
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [ array.indexOf(string) == -1 ]
);
</script>
<?php ?>
【讨论】:
我按照你说的添加了 css,但它不起作用,它是黑白的 你能告诉我你是如何加载 CSS 的吗? maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"> ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/…" rel="stylesheet" type="text/css"> 为什么有 Bootstrap Datepicker UI Js? 纯代码的答案没有那么有用。一个好的答案应该解释为什么 OP 有问题以及您的代码如何修复它。以上是关于在php中使用jquery禁用输入框中的特定日期不起作用的主要内容,如果未能解决你的问题,请参考以下文章
jQuery UI Datepicker - 如何动态禁用特定日期
如果给定jquery ui进行日期选择,如何不允许用户在日期字段的文本框中输入? [复制]