在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 = &lt;?php $names ?&gt;;会报错,需要做JSON编码或者加引号。

例如:var array = &lt;?php echo json_encode($names); ?&gt;var array = '&lt;?php echo implode(",",$names); ?&gt;'

    您在代码中遗漏的另一件事是您没有为您在 JS 中使用的 PHP 变量添加 echo。

例如:现在你的代码是var array = &lt;?php $names ?&gt;;,它没有回显,所以$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进行日期选择,如何不允许用户在日期字段的文本框中输入? [复制]

jQuery UI Datepicker - 禁用特定日期

如何根据 PHP 数据库中的结果在 jQuery 日期选择器上禁用一周中的某些天

禁用特定文本框上的输入键

如何使用 jquery 在选择框中启用/禁用选项