1

我有一个可以工作和搜索的日历程序。默认情况下,jQuery 将用户选择的日期推送到输入框。

<input type="hidden" id="datepickerFrom" />

据我所知,您在搜索时无法获取此值(如果可以,则可以解决以下问题)

然后我将 jQuery、CSS 和文本/标签框移到主程序中,但是当我单击日历功能时,它会显示日历,并按照上面的方式填写输入框。(我解开这个来检查)

在我的独立版本中,我的日期是

 <asp:TextBox ID="lblDateStart" runat="server" width="120px" />

jQuery 基于文件夹中的 js 文件,并且显然被引用,否则什么都不起作用。

填写两者的代码如下。我已经来回玩了几门课程。

我尝试将 CSS/jQuery 引用放在主文件和 .aspx 文件中以查看它是否有所作为,并将 jQuery 放在页面本身上(混乱但很好的测试)。

因此,CSS 和引用可以根据我的能力进行工作。错误反馈到页面,但仅针对文本框。

在日历日期点击触发的代码...

//Varibles passed out here from the functions as we can not check inputs
var lblDateStart = '<%= lblDateStart.ClientId %>';
function setLabelStart(yourDate1) {
    $("#lblDateStart").val(yourDate1);
}

var lblDateEnd = '<%= lblDateEnd.ClientId %>';
function setLabelEnd(yourDate2) {
    $("#lblDateEnd").val(yourDate2);
}

$(document).ready(function () {
    $("#datepickerFrom").datepicker({
        //display month drop down
        changeMonth: true,
        //display year drop down
        changeYear: true,
        //date format
        dateFormat: "dd/mm/yy",
        //calender image
        showOn: "button",
        buttonImage: "../images/calendar.gif",
        buttonImageOnly: true,
        //multiple months
        numberOfMonths: 3,
        //show 'done' button
        //showButtonPanel: true,
        // Default Date
        defaultDate: "-4w",
        //pass value to variable
        onSelect: setLabelStart
    });
});

//More than one date? You need to scripts

$(document).ready(function () {
    $("#datepickerTo").datepicker({
        //display month drop down
        changeMonth: true,
        //display year drop down
        changeYear: true,
        //date format
        dateFormat: "dd/mm/yy",
        //calender image
        showOn: "button",
        buttonImage: "../images/calendar.gif",
        buttonImageOnly: true,
        //multiple months
        numberOfMonths: 3,
        //show 'done' button
        //showButtonPanel: true,
        // Default Date
        defaultDate: "+0w",
        //pass value to variable
        onSelect: setLabelEnd
    });
});

所以我现在需要一点指导,如果你想了解更多细节,请告诉我。:-)

我怀疑这可能与下面的 ClientID 行有关,但这可能是一个红鲱鱼?

var lblDateEnd = '<%= lblDateEnd.ClientId %>';

4

2 回答 2

1

您将变量用作常量,因此任何元素都将匹配选择器,而不是:

var lblDateStart = '<%= lblDateStart.ClientId %>';
function setLabelStart(yourDate1) {
    $("#lblDateStart").val(yourDate1);
}

var lblDateEnd = '<%= lblDateEnd.ClientId %>';
function setLabelEnd(yourDate2) {
    $("#lblDateEnd").val(yourDate2);
}

用这个:

var lblDateStart = '#<%= lblDateStart.ClientId %>';
function setLabelStart(yourDate1) {
    $(lblDateStart).val(yourDate1);
}

var lblDateEnd = '#<%= lblDateEnd.ClientId %>';
function setLabelEnd(yourDate2) {
    $(lblDateEnd).val(yourDate2);
}

如您所见,# 包含在选择器变量中以获取匹配元素的值。

于 2013-08-28T15:43:25.500 回答
0

首先非常感谢爱德华。我遇到的问题是试图将 jQuery 值放入文本框中。

我发现它在没有母版页的情况下在 .aspx 页面中工作。但是,添加一个母版页并添加一个内容占位符。

在我看来,内容占位符的行为和感觉很像一个子文件夹,或者我敢说它是一个 iframe(但没有地狱般的含义)。

所以解决方案,无论你在页面上有标签、文本框等,但在 contentplaceholder 中,但值没有传递:

1)在 IE 中打开页面 2)查看源代码 3)复制 IE 给标签的 ID(它会更改) 4)将此作为目标

即我起初(错误地)瞄准

   $("#lblDateEnd").val(yourDate2);

但实际上我需要先添加“ct100_”,这总是放在前面

然后添加占位符名称,在我的情况下为“ContentPlaceHolder_”

注意下划线,它们就像文件夹的正斜杠

最后它会工作......

$("#ctl00_ContentPlaceHolder1_lblDateEnd").val(yourDate2);
于 2013-08-29T08:28:45.087 回答