我用vs2010写的.net 4的页面,加了个97日历控件,单引号被转义了,请教怎么处理?
我用了高级的函数,控制两个文本框来输入日期的起始,即起日期输入后结束日期不得小于起日期。my97控件官方给的是:
onfocus="WdatePicker({isShowClear:false,readOnly:true,firstDayOfWeek:1,errDealMode:1,maxDate:'#F{$dp.$D(\'dateend\')}'})"
我写到aspx页面里面是:
开始日期:<asp:TextBox ID="DateStart" runat="server"
ontextchanged="DateStart_TextChanged" onfocus="WdatePicker({isShowClear:false,readOnly:true,firstDayOfWeek:1,errDealMode:1,maxDate:'#F{$dp.$D(\'dateend\')}'})"></asp:TextBox>
但是浏览器访问后单引号被转义了为 '
开始日期:<input name="ctl00$MainContent$DateStart" type="text" id="MainContent_DateStart" onfocus="WdatePicker({isShowClear:false,readOnly:true,firstDayOfWeek:1,errDealMode:1,maxDate:'#F{$dp.$D(\'dateend\')}'})" />
请教要如何处理??谢谢 --------------------编程问答-------------------- 要,maxDate:'#F{$dp.$D(\'dateend\')}'这段干嘛呀,去掉不行么? --------------------编程问答-------------------- maxDate:'<%=DateTime.Now.AddDays(1).ToString("yyyy-MM-dd") %>'
这样就OK --------------------编程问答--------------------
这个是官方给的API函数,加上去才能实现我上面说的限制用户选择日期的行为。默认的日期可以随便选的。我要选了起日期,结束日期只能选择这个起日期后面的日期,前面的被禁用了。 --------------------编程问答--------------------
这个能行吗?我那个是官方给的函数啊,能随便改吗? --------------------编程问答-------------------- 请在去看下API 还有一种是可以这样写的
var minDay = $("#MinDateValue").val();(时间类型的字符串/比如:yyyy-MM-dd HH:mm:ss)
WdatePicker({ isShowClear: false, readOnly: true, dateFmt: 'yyyy-MM-dd HH:mm:ss', minDate: minDay }); --------------------编程问答--------------------
我就是用的这个日历控件咧。。大仙,一个日期最大值不是随你怎么改么 --------------------编程问答-------------------- 把maxDate:'#F{$dp.$D(\'dateend\')}'放在最前面试试
<asp:TextBox ID="DateStart" runat="server" OnTextChanged="DateStart_TextChanged"
onfocus="WdatePicker({maxDate:'#F{$dp.$D(\'dateend\')}',isShowClear:false,readOnly:true,firstDayOfWeek:1,errDealMode:1})"></asp:TextBox> --------------------编程问答-------------------- 其实你完全可以进WdatePicker里去设置maxDate的默认值为#F{$dp.$D('dateend')}
这样你就不用在页面的设置这个属性了 --------------------编程问答--------------------
放前面还是一样,被转义了 --------------------编程问答--------------------
请问你这个是写在cs文件里的还是aspx文件里的?我怎么没找到你这个官方用法?谢谢 --------------------编程问答--------------------
这个我也想的,可惜看不懂那个文件。 --------------------编程问答--------------------
js 里面写 就是赋值一个变量(时间格式字符串) 然后再WdatePicker里面给minDate或maxDate:变量 --------------------编程问答--------------------
我看了下,看不懂那些js脚本啊。不知道怎么直接调用上述那个函数 --------------------编程问答--------------------
我在js脚本里面修改了他的参数:
minDate:"#F{$dp.$D('DateStart')}",
maxDate:"#F{$dp.$D('DateEnd')}",
直接这样调用:
开始日期:<asp:TextBox ID="DateStart" runat="server" onfocus="WdatePicker({isShowClear:false,readOnly:true,firstDayOfWeek:1,errDealMode:1})"></asp:TextBox>
还是无效 --------------------编程问答-------------------- 很多种方法,
服务器端
this.DateStart.Attribute.Add("onfocus","WdatePicker({isShowClear:false,readOnly:true,firstDayOfWeek:1,errDealMode:1})") --------------------编程问答-------------------- 分享一个自己写好的
$(document).ready(function () {
$(".RightDatepick").focus(function () {
var LeftDatepickValue = $(".LeftDatepick").val();
if (LeftDatepickValue != "") {
WdatePicker({
onpicked: function () { onpickAction("Right") },
minDate: '%y-&M-%d',
errDealMode: 0,
maxDate:"#F{$dp.$DV(\'"+LeftDatepickValue+"\', { d: -1 })}",
doubleCalendar: true,
readOnly: true
});
}
else {
WdatePicker({
onpicked: function () { onpickAction("Right") },
minDate: '%y-&M-%d',
errDealMode: 0,
doubleCalendar: true,
readOnly: true
});
}
});
$(".LeftDatepick").focus(function () {
var RightDatepickValue = $(".RightDatepick").val();
if (RightDatepickValue != "") {
WdatePicker({
onpicked: function () { onpickAction("Left") },
minDate: "#F{$dp.$DV(\'" + RightDatepickValue + "\', { d: 1 })}",
errDealMode: 0,
doubleCalendar: true,
readOnly: true
});
}
else {
WdatePicker({
onpicked: function () { onpickAction("Lfet") },
minDate: '%y-&M-{%d+1}',
errDealMode: 0,
doubleCalendar: true,
readOnly: true
});
}
});
});
function onpickAction(Direction) {
if (Direction == "Right") {
var leftDatepickinput = $(".LeftDatepick");
if (leftDatepickinput.val()=="") {
leftDatepickinput.get(0).focus();
}
else{
TrueAction();
}
}
else {
var rightDatepickinput = $(".RightDatepick");
if (rightDatepickinput.val() == "") {
rightDatepickinput.get(0).focus();
}
else {
TrueAction();
}
}
}
TrueAction() 这个方法是要自己写的,是当两个文本框都有日期就执行的方法,没有的话可以为空函数
RightDatepick LeftDatepick 两个文本框的 Class名称
RightDatepick 在前 LeftDatepick 再后 --------------------编程问答--------------------
这个是自己写吗?官方给的函数不用调用吗?谢谢 --------------------编程问答--------------------
+1 --------------------编程问答--------------------
要啊,要引入my97 日历控件,我地项目经常用到,我就自己写一个出来调用 --------------------编程问答--------------------
你这个是js脚本吗?我是不是复制到js文件里面,然后再调用你这个和my97那个?那我的文本框那里要调用什么函数呢?
PS:你这个是符合我那个要求的吗?就是只要选择起日期,那么结束日期就被自动限制为小于起日期的,反之亦然。
谢谢。 --------------------编程问答--------------------
我这个是符合的的要求的
使用方法 先引入JQuery 的JS包,和 My97日历的 JS包
两个文本框的 Class 为 RightDatepick LeftDatepick
就可以了
TrueAction(); 这个函数是两个文本框 都以选中日期时就会调用到 可以自己写事件在入面 --------------------编程问答--------------------
先引入JQuery 的JS包,和 My97日历的 JS包 在引入这个我的JS --------------------编程问答-------------------- 5楼正解
最近做一个模块也用到这个功能,直接看官方教程里面有啊 --------------------编程问答--------------------
<input id="txtStartTime" type="text" readonly="readonly" runat="server" class="Wdate ym "--------------------编程问答--------------------
style="width: 150px;" onfocus="WdatePicker({readOnly:true,
dateFmt:'yyyy-MM-dd HH:mm',
isShowToday:true,
minDate:'#F{$dp.$D(\'txtDeadline\')||\'%y-%M-%d\'}',
maxDate:'#F{$dp.$D(\'txtEndTime\')}',
oncleared:showDatePrompt
})" />
<input id="txtEndTime" type="text" readonly="readonly" runat="server" class="Wdate ym "
style="width: 150px;" onfocus="WdatePicker({readOnly:true,
dateFmt:'yyyy-MM-dd HH:mm',
isShowToday:true,
minDate:'#F{$dp.$D(\'txtStartTime\')}',
maxDate:'2020-10-01',
oncleared:showDatePrompt
})" />
<input id="txtDeadline" type="text" readonly="readonly" runat="server" class="Wdate ym "
style="width: 150px;" onfocus="WdatePicker({readOnly:true,
dateFmt:'yyyy-MM-dd HH:mm',
isShowToday:true,
minDate:'%y-%M-%d',
maxDate:'#F{$dp.$D(\'txtStartTime\')}',
oncleared:showDatePrompt
})" />
你这个里面同样有单引号了,无效啊。 --------------------编程问答--------------------
是html代码,我搞错了,但是你说的单引号问题是怎样的,我没有遇到 啊 --------------------编程问答-------------------- 哦,你是用Textbox控件,我使用的Input标签 --------------------编程问答-------------------- 但是我的Input是加了runat="server"属性的在后置代码文件可以取到控件的哦
textbox在生成html代码时,是不是会经历编码解码的过程呢? --------------------编程问答--------------------
我换成input也是一样被转义了啊。我也加了runat="server"属性 --------------------编程问答--------------------
建议你使用js添加属性的方式把代码添加到属性里面吧 --------------------编程问答-------------------- 把单引号把变成这样: '=\" --------------------编程问答--------------------
用这个双引号把后面的函数变成aspx里面的代码了,出错。 --------------------编程问答--------------------
那你给的那串代码我贴哪里呢?谢谢。 --------------------编程问答--------------------
新建一个JS文本,复制上去就可以了
补充:.NET技术 , ASP.NET