我正在尝试为“TBXinsertDate”asp:TextBox 控件设置一个默认值,
通过使用 focus 事件 (js) ,虽然...在我看来 ajax watermark Extender 实际上 用它自己的操作覆盖我的操作,如果这是问题所在,
我如何设置自己的默认值?
aspx
<cc1:TextBoxWatermarkExtender ID="insertDate_TextBoxWatermarkExtender" runat="server" TargetControlID="TBXinsertDate" WatermarkText="insertDate" WatermarkCssClass="WaterMarkedTextBox">
</cc1:TextBoxWatermarkExtender>
<cc1:MaskedEditExtender enabled="true" MaskType="Date" ID="insertDate_MaskedEditExtender" runat="server" BehaviorID="tet"
TargetControlID="TBXinsertDate" InputDirection="LeftToRight" CultureName="en-GB"
UserDateFormat="None" Mask="99/99/9999" MessageValidatorTip="true" OnFocusCssClass="maskedFocus" ErrorTooltipEnabled="true" ErrorTooltipCssClass="toolTipForInvalid">
</cc1:MaskedEditExtender>
<asp:TextBox ID="TBXinsertDate" runat="server" ToolTip="please insert date" Width="76px">
</asp:TextBox>
我知道,我可以使用任何类型的 datePicker ...,但要求如前所述,通过键盘手动设置。
更新
默认应该是今天的日期,比如...26/12/2012
更新#2代码
下面是:Javascript+Ajax双模WaterMark
更新 3 和最重要的更新:
1) this Js code 不是我的问题的特殊之处......它甚至不是它的来源
2) 如果我省略 Ajax Extenders 则问题不存在:validation + maskEdit 来自 ASPX!
3) 总结一下,问题是设置默认值=今天日期
如果我不添加扩展器 - validator + Maskedit 我的尝试工作正常!值已设置。
请有Ajax Toolkit经验的人在这里提供一点帮助。
我也会更新这个问题的标题
var masked = "__/__/____";
var MultiWatermark = function (obj, options) {
var defaultOptions = {
// These variables can be changed to alter functionality using the passed in options object
watermarkVals: ["insert date", "mmddyyyy"], // all watermark values.
totalIterations: 20, // how many times to go through watermark Array.
watermarkClassName: "WaterMarkedTextBox",
normalClassName: "NormalTextBox",
changeDelay: 1000, // in milliseconds
extraValsToCheck: ['', null]//
}
//merge options with defaultOptions
for (var property in defaultOptions) {
if (!options.hasOwnProperty(property)) {
options[property] = defaultOptions[property];
}
}
// local variables (do not change)
var textBox = obj;
var iterationCounter = 0;
var itemCounter = 0;
var intrId;
var startWatermark = function () {
itemCounter = 0; iterationCounter = 0; // resets for after blur
intrId = setInterval(function () { alterWaterMark() }, options.changeDelay);
}
var stopWatermark = function () {
clearInterval(intrId);
}
var alterWaterMark = function () {
if (iterationCounter < options.totalIterations) {
textBox.value = options.watermarkVals[itemCounter];
itemCounter += 1;
if (itemCounter == options.watermarkVals.length) {
itemCounter = 0;
iterationCounter += 1;
}
}
else {
stopWatermark();
}
}
var isWatermarkValue = function (val) {
var i = options.watermarkVals.length;
while (i--) {
if (options.watermarkVals[i] === val) {
return true;
}
}
// value is not in watermark array, so check secondary values.
i = options.extraValsToCheck.length;
while (i--) {
if (options.extraValsToCheck[i] === val) {
return true;
}
}
}
var setClass = function () {
textBox.className = isWatermarkValue(textBox.value) ? options.watermarkClassName : options.normalClassName;
///////this is wher i tried to set it <==========
textBox.value = "26/12/2012";
}
var focusEvent = function () {
stopWatermark();
if (isWatermarkValue(textBox.value)) {
textBox.value = "";
///////this is where i was First time trying to set it <==========
//alert("was focused");
}
setClass()
}
var blurEvent = function () {
if (isWatermarkValue(textBox.value)) {
startWatermark();
}
setClass();
}
var initWatermark = function () {
setClass();
textBox.onfocus = focusEvent;
textBox.onblur = blurEvent;
startWatermark();
}
initWatermark();
}
function runWatermarkOn(formId, targetid, wm1,wm2,wm3, iterations, delay) {
var dateOptions = {
// These variables alter functionality, the main script will use the defaults of any options not included here
watermarkVals: [wm1, wm2], // all watermark values.
totalIterations: iterations,
changeDelay: delay, // in milliseconds
extraValsToCheck: ['', null, masked]
}
if (wm3!= undefined)
dateOptions.watermarkVals[2] = arguments[4];
new MultiWatermark(document.forms[formId].elements[targetid], dateOptions);
}
runWatermarkOn("form1", "TBXinsertDate", "insert Date", "dd/mm/yyyy", undefined, 2, 1500);
请参阅上面代码块中间的注释。那就是我尝试的地方。 尝试将今天的日期硬编码为它的值(value)。 正如我所指的问题。这个想法是,我尝试使用什么 javascript 或 Jquery 并不重要,因为 MaskEditExtender 超越了我的值(value)。
我真的很感谢这里的一些帮助。
谢谢
请您参考如下方法:
由我解决,像往常一样,当问题的代码太长而无法通读时
虽然代码不是问题,但正如我所说,是 Extender-MaskEdit 压倒了我的值(value)观。
作为解决方法,我所做的是 C# onload 禁用 MaskEdit
insertDate_MaskedEditExtender.Enabled = false;
和javascript
var MaskEdit1 = $('#BEHAVIOR-id' (not the standart one of the extender);
MaskEdit1.disabled = false;
