我有一个可以工作和搜索的日历程序。默认情况下,jQuery会将用户选择的日期推送到输入框。
<input type="hidden" id="datepickerFrom" />
据我所知,在进行搜索时无法获得此值(如果可以,则可以解决以下问题)
然后我将jQuery,CSS和文本/标签框移动到主程序中,但是当我点击日历功能它显示日历时,按上面填写输入框。 (我取消了这个检查)
在我的独立版本中,我的日期是
<asp:TextBox ID="lblDateStart" runat="server" width="120px" />
jQuery基于文件夹中的js文件,显然被引用或没有任何效果。
填写这两者的代码如下。我一直在玩几个往返的课程。
我已经尝试将CSS / 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;';
答案 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);