DatePicker在函数内部调用时不起作用

时间:2017-05-19 08:22:41

标签: javascript jquery datepicker

我有这个奇怪的问题。我正在尝试在文档就绪函数中初始化一个日期选择器:

while (lengthN == 0)
{
    printf_s("\nName too big; please enter a name within 15 
    characters!\n\n");
    scanf_s("Enter name: %s", &name, 15);
    lengthN = strlen(name);
}

问题是这不起作用。 datepicker不起作用。幸运的是,当我重新定位元素时:

$(document).ready(fncInitialize);

    function fncInitialize() {
        fncBindControls();
    }

    function fncBindControls() {
         var objDate = $(this).find("input[data-datepicker='True']");
        objDate.datepicker();
    }

此代码有效。但为什么?我只是将datepicker放在另一个函数上以保持可维护性,但它不起作用。我真的需要把它放在文件准备好的第一个功能中吗?

1 个答案:

答案 0 :(得分:4)

问题是因为在第二个功能中你已经失去了this的范围。您需要将其作为参数传递:

$(document).ready(fncInitialize);

function fncInitialize() {
  fncBindControls(this);
}

function fncBindControls(el) {
  var objDate = $(el).find("input[data-datepicker='True']");
  objDate.datepicker();
}

或者在调用函数时提供范围:

function fncInitialize() {
  fncBindControls.call(this);
}