如何在datepicker中应用if循环

时间:2014-01-24 15:36:54

标签: javascript jquery ajax

我有两个日期字段,如果用户只选择一个日期,那么函数A应该被执行,否则如果选择了两个日期,那么函数A和B应该被执行。我正在使用jquery datepicker 这是我的两个选择功能:

$(function () {
    $("#SelectA").datepicker({
        onSelect: function (date) {
            A = $('#SelectA').val();
            Method(A, "", "");
        }
    });
});

$(function () {
    $("#SelectB").datepicker({
        onSelect: function (date) {
            A = $('#SelectA').val();
            B = $('#SelectB').val();
            Method(A, B, "");
        }
    });
});

问题是我如何在这里实现IF循环?我是否需要终止functionA并在选择功能B时重新调用它?

        function Method(A,B,C) {
        $.ajax({
            type: "POST",
            url: "Services/MethodName.asmx/Method",
            data: JSON.stringify({ A: A, B: B, C: C }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                place the data into a table
            }
        });
    }

这是我的日期选择器:

var nowTemp = new Date();
    var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);

    var checkin = $('#dpd1').datepicker({
        onRender: function (date) {
            return date.valueOf() < now.valueOf() ? 'disabled' : '';
        }
    }).on('changeDate', function (ev) {
        if (ev.date.valueOf() > checkout.date.valueOf()) {
            var newDate = new Date(ev.date)
            newDate.setDate(newDate.getDate() + 1);
            checkout.setValue(newDate);
        }
        checkin.hide();
        $('#dpd2')[0].focus();
    }).data('datepicker');
    var checkout = $('#dpd2').datepicker({
        onRender: function (date) {
            return date.valueOf() <= checkin.date.valueOf() ? 'disabled' : '';
        }
    }).on('changeDate', function (ev) {
        checkout.hide();
    }).data('datepicker');

3 个答案:

答案 0 :(得分:0)

假设您正在使用jQuery datepicker(此问题尚未被标记),那么您只需使用onSelect方法返回日期,然后您可以检查日期和{{1} }语句并运行您的自定义代码。

这是一个jsfiddle。 http://jsfiddle.net/xu8zZ/

if

当您选择日期时,只需查看您的控制台,您就会看到它如何返回日期;在那个时候,你可以写下你的病情。

参考。 http://api.jqueryui.com/datepicker/#option-onSelect

答案 1 :(得分:0)

我不是100%肯定你所问的,但我认为这可能会解决你的问题(假设服务器知道如何处理空白值):

$(function () {
    $("#SelectA").datepicker({
        onSelect: handleSelectedDates
    });
    $("#SelectB").datepicker({
        onSelect: handleSelectedDates
    });

    function handleSelectedDates(date) {
        var A = $('#SelectA').val();
        var B = $('#SelectB').val();

        Method(A, B, "");                
    }

    var ajaxReq;
    function Method(A,B,C) {
        if (ajaxReq)
            ajaxReq.abort();
        ajaxReq = $.ajax({
            type: "POST",
            url: "Services/MethodName.asmx/Method",
            data: JSON.stringify({ A: A, B: B, C: "" }),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                place the data into a table
            }
        });
    }
});

答案 2 :(得分:0)

您可以使用一个功能来处理这两个事件:

$(function () {
  $("#SelectA,#SelectB").datepicker({
    onSelect: function (date) {
      var A = $('#SelectA').val();

      if ($(this).attr("id") == "SelectB")
      {
        var B = $('#SelectB').val();
      }
      else
      {
        var B = "";
      }
      var C = "";
      Method(A, B, C);
    }
  });
});