升级后jQuery setdate出现问题

时间:2011-05-16 06:42:07

标签: jquery datepicker upgrade

我有以下代码:

<input id="aanschafdatum" type="text" name="aanschafdatum" size="40" value="" />
<input id="sel_aanschafdatum" type="hidden" value="12-05-2011" />

$(document).ready(function() {
    var selected_date = document.getElementById("sel_aanschafdatum").value;
    loadDatepicker('#aanschafdatum', selected_date );
});

 function loadDatepicker(id, selected_date) {
     if (selected_date === undefined) {
         selected_date = "";
     }
     $(function() {
         $(id).datepicker();
     });
     if (selected_date !== '') {
         $(id).datepicker("setDate", selected_date);
     }
 }

此代码工作正常,当前日期“12-05-2011”将在datepicker中设置。但升级到最新版本的jQuery后,它不再起作用了。仅当我从

中删除document.ready
var selected_date = document.getElementById("sel_aanschafdatum").value;
loadDatepicker('#aanschafdatum', selected_date );

它有效。

我已使用jsFiddle对其进行了测试。使用jQuery 1.4.4,它工作正常;使用jQuery 1.5.2,它不会设置当前值。

希望有人可以提前帮助。

埃德

1 个答案:

答案 0 :(得分:1)

你有错误的jQuery“语法”,可能在较新版本中他们不再原谅这样的事情了。

在函数loadDatepicker内部,您将一些代码嵌套在$(function() {}块中 - 这是错误的。

它应该是另一种方式,意味着$(function() {}块应该嵌套你想要运行的函数。由于您已在$(document).ready的上下文中使用此代码,因此只需删除$(function() {,您就可以了:

function loadDatepicker(id, selected_date) {
     if (selected_date === undefined) {
         selected_date = "";
     }

     $(id).datepicker();

     if (selected_date !== '') {
         $(id).datepicker("setDate", selected_date);
     }
 }

更新了jsFiddle:
http://jsfiddle.net/MgWNv/5/