【问题标题】:disabling particular date in input box using jquery in php not working在php中使用jquery禁用输入框中的特定日期不起作用
【发布时间】: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 库
  • @KHIMAJIVALUKIYA 我添加了 jquery cdn 和 datepicker cdn,我得到控制台错误 datepicker is not a function

标签: javascript php jquery sql date


【解决方案1】:

对于 jQuery DatePicker,您需要添加 jQuery UI JS 和 CSS。

您需要遵循两件事:

  1. 不能直接在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;'

  1. 您在代码中遗漏的另一件事是您没有为您在 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 有问题以及您的代码如何修复它。
猜你喜欢
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多