【问题标题】:Function triggering early功能提前触发
【发布时间】:2012-08-25 11:21:09
【问题描述】:

我试图从函数中回调一个值,但是,回调始终未定义,因为 jQuery Date Picker 永远没有机会设置 var sdate,因此提醒我它未定义。我真的需要你的帮助,而且似乎无法解决这个问题。

var sdate
function test() {


    select_date()
    alert(sdate)

    }


  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

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

}

【问题讨论】:

  • sdate 实际上是 undefined 在您执行 alert(sdate) 时。

标签: javascript jquery html jquery-ui


【解决方案1】:

这对你有什么好处?

$('#d1').datepicker({
        onSelect: function() {
           sdate = $(this).val(); 
          //set value to the global variable (although not the best approach)
            $("#dd").dialog("close");
        }
 });

【讨论】:

  • sdate 设置得很好,但是,id 喜欢在函数测试中检查 sdate 的值,如果它为 null { do something } if it not { do something else }
  • @JasonKelly,如果这不是你想要的,你为什么要把它标记为答案?
  • @Alexander:我怀疑这是因为他根据我在这里想说的内容更新了(模糊)问题中的代码。大声笑..
【解决方案2】:

你根本没有设置sdate。我想也许你的意思是sdate = select_date();

【讨论】:

  • 我也是这么想的。但即使x 也是undefined,因为它仅在onSelect 事件回调中设置。
  • 我已经修改了错字。真正的问题是函数测试中的警报框在 select_date 有机会设置 sdate 变量之前提前触发
  • @JasonKelly:无论该函数返回什么,它都不会被您的 alert 使用,也永远不会设置为 - 例如:您在哪里 sdate = xValue。你应该试试alert(select_date)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-26
  • 2015-06-12
相关资源
最近更新 更多