在jQuery的JavaScript回调中返回值

时间:2012-02-24 11:24:24

标签: c# javascript jquery asp.net

抱歉,我找不到合适的标题

这是我的问题

我正在使用一个返回字符串值的方法,如hh:mm(12:45) 此方法名为DeliveryTimeCalc()

我正在使用jQuery timepicker来获取我的aspx页面上的输入 这个时间戳必须在最短时间内得到验证 最小时间应该是DeliveryTimeCalc()方法返回的值 在jQuery初始化期间必须调用此服务器端方法 所以我做了以下方法

<script type="text/javascript">
    $(document).ready(function () {
        //window.onload = pageMethodConcept.callServerSideMethod;
        var time = pageMethodConcept.callServerSideMethod;
        alert(time);
        var hm = time.split(':');
        var h = hm[0]; var m = hm[1];
        $("#tb_DeliveryTime").timepicker({ showPeriodLabels: false,
            onHourShow: OnHourShowCallback,
            onMinuteShow: OnMinuteShowCallback
        });
        function OnHourShowCallback(hour) {

            if ((hour < h)) {
                return false; // not valid
            }
            return true; // valid
        }
        function OnMinuteShowCallback(hour, minute) {
            if ((hour == h) && (minute <= m)) { return false; } // not valid
            return true;  // valid
        }
    });
</script>
<script language="javascript" type="text/javascript">
pageMethodConcept = {
    callServerSideMethod: function () {
         PageMethods.DeliveryTimeCalc(pageMethodConcept.callback);
    },
    callback: function (result) {
        alert(result);
        //return result;
        }
    }
    //window.onload = pageMethodConcept.callServerSideMethod;
</script>

但问题是它没有返回值(hh:mm) 我收到一个警告框,其中包含

之类的输出
function () {
    PageMethods.DeliveryTimeCalc(pageMethodConcept.callback);
}

即使我使用return我也得到相同的值

但如果我使用

window.onload = pageMethodConcept.callServerSideMethod;

我收到一个警告框,其中包含hh:mm

等输出

请帮助!

2 个答案:

答案 0 :(得分:1)

尝试简单地改变:

var time = pageMethodConcept.callServerSideMethod();

跟踪():你必须将函数的返回值赋给变量,而不是函数本身,但是:

window.onload = pageMethodConcept.callServerSideMethod;

按预期工作,因为你正在为一个事件分配一个处理程序而你没有参数可以传递给函数:这实际上它可以写成:

window.onload = function() {
    pageMethodConcept.callServerSideMethod();
}

答案 1 :(得分:0)

谢谢你们的帮助 但我自己找到了解决方案

Sol 1 使用Web服务

http://markitup.com/WebServices/TimeZones.asmx?op=CurrentDateTime

这是一个Web服务,我们必须在其中输入时区的名称 例如:(印度标准时间)

Sol 2

在pageload中编写一个方法,并在该方法中编写代码。  当你必须返回结果 将结果放在labe文本中,并使标签的可见性为false (注意:如果可见性设置为false,则无法在javascript中找到标签 这样做而不是使可见性变错。 style =“display:none;”这也是一样的 但在JavaScript中你可以找到标签) 你可以使用

在javascript中找到标签
var time = $("#lbl_time").text();

由于我们将jquery编码为$(document).ready(function(),因此只有在执行页面加载后才会执行jquery

解决了问题

谢谢

-Krishna Thota