【问题标题】:Replace grails datepicker with jquery-ui datepicker用 jquery-ui datepicker 替换 grails datepicker
【发布时间】:2021-08-14 08:04:33
【问题描述】:

我正在使用 Grails 4。我的图书域有一个名为 publishDate 的日期字段。我在编辑视图中使用 来显示输入字段。 Fields 插件在 html 中显示了 3 个下拉框,分别为书中的日期字段。

请教我如何用 jQuery UI 日期选择器替换 Grails 日期选择器?

谢谢!

【问题讨论】:

    标签: grails datepicker


    【解决方案1】:

    如果旧的社区插件仍在运行,您可以搜索他们的代码以找到您的解决方案。由于 Grails 不再支持其社区,您可以尝试通过 github 查找旧插件。这将是您最快的解决方案。

    【讨论】:

    • 好的,谢谢。我会继续google答案。
    • 您可能需要考虑将视图分离为类似 nodejs 前端的东西,而后端只是 api 服务器;这提供了更好的抽象性和可扩展性。
    【解决方案2】:

    如果这对您或遇到此问题的任何其他人有帮助:我们所做的是创建自己的标签来完成此操作。您必须对其进行一些调整以使其适合您,并包含来自 jquery ui 的必要资产,但标签类似于:

    /*
    * Render an input field that includes a calendar popup.
    */
    def dateField = { attrs ->
        if (!attrs.id) {
            out << "'id' is a required attribute."
            return
        }
    
        def additionalKeys = attrs.keySet() - ['id','name','value','className']
        def passthroughAttrs =""
        additionalKeys.each{key->
            passthroughAttrs += "${key}='${attrs[key]}' "
        }
    
        out << "<input type='text' class='calendarField ${attrs.className ?: ''}' id='${attrs.id}' name='${attrs.name ?: attrs.id}' value='${attrs.value ?: ''}' autocomplete='off' "
        out << "onfocus=\"jQuery(this).datepicker().datepicker('show');\" "
        out << "$passthroughAttrs/>"
        out << "<img id='cal_${attrs.id}' class='calendarIcon' alt='Show Calendar' title='Show Calendar' src='${assetPath(src: 'calendar.png')}' "
        out << "onclick=\"jQuery('#${attrs.id}').focus();\"/>"
    }
    

    用法类似于:

    <ns:dateField id="someUniqueID" name="fieldName" />
    

    【讨论】:

    • 谢谢,但我不明白你的代码。我将您的代码复制并粘贴到我的图书控制器。没有什么与浏览器不同。你能帮我理解吗。谢谢。
    【解决方案3】:

    正如丹尼尔所说,您可以编写自己的标签,这也是我所做的。我还要注意html输入标签有一个日期类型。

    <input type="date" id="some-id">
    

    这对我有用,而不是创建新标签的所有工作。 html 输入的缺点(在我看来)是某些功能没有完整的浏览器支持(最小,最大)。至少他们不为我工作。此外,如果您在某些地方使用 jQuery ui 而在其他地方使用 html,则在 post 请求中提交的数据会有所不同。 输入标签会给你类似 yyyy-mm-dd 而 jQuery 为您提供类似 mm-dd-yyyy 的内容。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-12
      • 2010-10-18
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多