javascript - 将 jQuery UI Timepicker 插件与 React 结合使用

标签 javascript jquery jquery-plugins reactjs jquery-ui-timepicker

我正在尝试使用 jQuery UI Timepicker Addon在我正在编写的 React 组件中。然而,每当我尝试使用它时,我都会收到一个错误,表明该插件添加到 jQuery 的“datetimepicker”函数未定义。

我认为我遇到的部分(或者全部)问题是 React 中没有用于此目的的模块,但我正在通过 React 导入 jQuery。我正在尝试做什么...

index.html:

<!DOCTYPE html>
<html lang='eng'>
  <head>
    <meta charset='utf-8'>
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- jQuery UI core CSS -->
    <link rel="stylesheet" href="dist/jquery-ui.css">

    <!-- jQuery UI Timepicker Addon CSS -->
    <link rel="stylesheet" href="dist/jquery-ui-timepicker-addon.css">
</head>
  <body>
    <p style="color: white">
      If you see this there is a problem with React on the site.
    </p>
    <script src="dist/bundle.min.js"></script>
    <script src="js/jquery-ui.min.js"></script>
    <script src="js/jquery-ui-timepicker-addon.js"></script>
  </body>
</html>

如您所见,由于该 Addon 目前不作为 React 组件存在(至少,如果存在的话我找不到它),因此我手动将其与 jQuery UI 一起导入。

我的组件(通过不同的组件包含在索引中):

/** @jsx React.DOM */
var React = require('react');
var jQ    = require('jquery');

var Time = React.createClass({
    componentDidMount: function() {
        jQ('#startDate').datetimepicker({
            timeFormat: "HH:mm:ss",
            onClose: function() {
                console.log("Timepicker closed");
            }
        });
    },
    render: function() {
        return (
            <input id="startDate" className="input-xs datetime modern" type="datetime-local" />
        );
    }
});

module.exports = {Time: Time};

我应该如何包含 Timepicker Addon 以便在此 React 组件中使用?

旁注:我使用时间选择器很大程度上是因为它在其他元素上的弹出效果非常好,并且包含对秒和各种时间格式的支持。我现在正在使用“datetime-local”输入,但它们并没有真正削减它:(

最佳答案

尝试在此处添加 jQuery:

<script src="js/jquery.min.js"></script>
<script src="js/jquery-ui.min.js"></script>
<script src="js/jquery-ui-timepicker-addon.js"></script>
<script src="dist/bundle.min.js"></script>

删除

var jQ    = require('jquery');

并使用 $ 代替 jQ

$('#startDate').datetimepicker({
        timeFormat: "HH:mm:ss",
        onClose: function() {
            console.log("Timepicker closed");
        }
    });

我还认为你可以使用 this.getDOMNode() 而不是 '#startDate'

 $(this.getDOMNode()).datetimepicker({
        timeFormat: "HH:mm:ss",
        onClose: function() {
            console.log("Timepicker closed");
        }
    });

关于javascript - 将 jQuery UI Timepicker 插件与 React 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29483396/

相关文章:

javascript - 将事件添加到 react 组件中的视频 html5 标签

javascript - 如何仅在未选中复选框时才执行函数?

javascript - 为什么我的 JQuery AJAX 功能无法正常工作?

jquery - jScrollPane滚动条问题

jquery - 将工具提示应用于每个单元格

javascript - 简单的javascript正则表达式

javascript - 如何组合匿名函数?

javascript - Chrome 和 Firefox 会刷新除一个之外的所有 js 文件

javascript - 如何使用 JQuery AJAX 调用 codeigniter 辅助函数?

JavaScript/jQuery 插件 : snap to grid