日历 - jQuery可以在站点上工作,但不能在带有母版页的.aspx页面上工作

时间:2013-08-28 15:26:16

标签: jquery html vb.net

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

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

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

然后我将jQuery,CSS和文本/标签框移动到主程序中,但是当我点击日历功能它显示日历时,按上面填写输入框。 (我取消了这个检查)

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

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

jQuery基于文件夹中的js文件,显然被引用或没有任何效果。

填写这两者的代码如下。我一直在玩几个往返的课程。

我已经尝试将CS​​S / jQuery引用放在master和.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 ='&lt;%= lblDateEnd.ClientId%&gt;';

2 个答案:

答案 0 :(得分: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);
}

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

答案 1 :(得分:0)

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

我发现当没有母版页时,它在.aspx页面中有效。但是,添加母版页并添加contentplaceholder。

在我看来,contentplaceholder的行为和感觉就像一个子文件夹,或者我敢说 - 一个iframe(但没有地狱般的暗示)。

所以解决方案,无论你有一个标签,文本框等在一个页面上,但在contentplaceholder中,值不通过:

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

即。我起初(错误地)目标

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

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

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

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

最后它会起作用......

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