在日期选择器中选择日期之前触发功能

Posted

技术标签:

【中文标题】在日期选择器中选择日期之前触发功能【英文标题】:Function triggering before I select a date in datepicker 【发布时间】:2012-08-25 07:50:16 【问题描述】:

我需要专家的帮助。

当我调用函数 v9_insert_cmets('1') 时,警报(sdate) 在我什至在日期选择器中选择日期之前触发。

我的目标是让 v9_insert_cmets() 检查 sdate 是否为空。如果它为 null 则只需 return 如果不是 do something else 。

当前情况,如果该 sdate 始终为 null,因为 datepicker 永远没有机会设置它。

var sdate

//========================================================================
  function v9_insert_comments(x) 
//========================================================================

    if (x == 1) 
            select_date()
            alert(sdate)
    


//end of function


//========================================================================
  function select_date() 
//========================================================================
    $('#dd').dialog(
        autoOpen: true,
        modal: true,
        overlay: 
            opacity: 0.5,
            background: 'black'
        ,
        title: "title",
        height: 265,
        width: 235,
        draggable: false,
        resizable: false

    ); //end of dialog

    $('#d1').datepicker(
        onSelect: function() 
            sdate = $(this).val();
            $("#dd").dialog("close");

        
    );

 //end of function

主体:

<!-- START OF DATE SELECTOR DIALOG -->
<div style="display:none" id="dd">
<div id="d1"></div>
</div>
<!-- END OF DATE SELECTOR DIALOG -->

【问题讨论】:

【参考方案1】:

在您的select_date 方法中,您只是在进行设置。对$('#dd').dialog() 的调用执行了所有jQuery UI 魔术来创建一个对话框,通过更新DOM 并将其连接起来。然后你调用$('#d1').datepicker(),它以类似的方式设置一个日期选择器。它只是说“这个 div 现在是一个对话框,这个 div 现在是一个日期选择器”。它不等待任何用户交互。您的 v9_insert_comments 函数假设事情是同步发生的,而它们实际上是异步发生的。

这些东西都设置好后,你马上要一个还没有设置的变量的值。它尚未设置,因为您为日期选择器的 onSelect 事件提供的匿名函数尚未触发。只有在日期选择器中选择了某些内容时才会调用此函数。因此,如果您想对选定的日期执行某些操作,请在事件处理程序中执行。

您可以将警报移动到事件处理程序,或者您可以从事件处理程序调用v9_insert_comments - 但在这种情况下,您应该将调用移动到其他地方的select_date。对话框和日期选择器只需要设置一次。

【讨论】:

以上是关于在日期选择器中选择日期之前触发功能的主要内容,如果未能解决你的问题,请参考以下文章

两个月,同时在引导程序的日期选择器中选择日期

当用户从日期选择器中选择日期时,如何在下拉列表中获取特定的星期几?

使用Swift语言自动在日期选择器中选择日期

在日期选择器中选择日期时,它不应接受等于年龄大于 20 岁的生日

Ember JS从日期选择器中选择日期时,更改按钮组件的颜色和标题

日期时间日历:在单个输入字段中选择日期范围