【问题标题】:calling a functions value [duplicate]调用函数值[重复]
【发布时间】:2012-08-25 11:52:47
【问题描述】:

可能重复:
Function triggering early

我已经编写了这段代码,但是当我调用函数 test( )?

对我来说似乎没有意义?

var sdate

function test() {
    alert(select_date())
}

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");
        }
    });
    return sdate
}​

【问题讨论】:

  • 好的,为了提供帮助,我们需要知道三件事:代码、它应该做什么以及它实际上在做什么。您只提供了其中的第一个,因此您不太可能得到答案。
  • 您使用的是哪个浏览器?我没有任何问题。
  • 另外,清理你的代码会让人们更容易帮助你,更不用说更容易维护了。
  • 函数 test() 将检查函数 select_date() 是否会返回任何内容(取决于用户是否选择日期或关闭窗口)浏览器版本是 ie 7
  • return sdate 由于 javascript 的工作原理,在用户与对话框交互之前运行。

标签: javascript jquery html jquery-ui javascript-framework


【解决方案1】:

onSelect 是一个事件回调,你试图在它知道要做什么之前返回一个值。不可能让您的 test() 返回值,因为它稍后会出现。

您应该在事件回调中执行警报或任何逻辑:

$('#d1').datepicker({
    onSelect: function() {
        sdate = $(this).val();
        $("#dd").dialog("close");
        alert(sdate);
        // or your own function
        someOtherTest(sdate);
    }
});

-

function someOtherTest(date) {
    alert(date);
}

【讨论】:

猜你喜欢
  • 2012-08-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-05
  • 1970-01-01
  • 1970-01-01
  • 2013-05-28
相关资源
最近更新 更多