📄 validatorcalloutbehavior.js
字号:
// (c) Copyright Microsoft Corporation.
// This source is subject to the Microsoft Permissive License.
// See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx.
// All other rights reserved.
/// <reference name="MicrosoftAjax.debug.js" />
/// <reference name="MicrosoftAjaxTimer.debug.js" />
/// <reference name="MicrosoftAjaxWebForms.debug.js" />
/// <reference path="../ExtenderBase/BaseScripts.js" />
/// <reference path="../Common/Common.js" />
/// <reference path="../Compat/Timer/Timer.js" />
/// <reference path="../Animation/Animations.js" />
/// <reference path="../Animation/AnimationBehavior.js" />
/// <reference path="../PopupExtender/PopupBehavior.js" />
Type.registerNamespace('AjaxControlToolkit');
AjaxControlToolkit.ValidatorCalloutBehavior = function AjaxControlToolkit$ValidatorCalloutBehavior(element) {
AjaxControlToolkit.ValidatorCalloutBehavior.initializeBase(this, [element]);
this._warningIconImageUrl = null;
this._closeImageUrl = null;
this._cssClass = "ajax__validatorcallout";
this._highlightCssClass = null;
this._width = "200px";
this._invalid = false;
this._originalValidationMethod = null;
this._validationMethodOverride = null;
this._elementToValidate = null;
this._popupTable = null;
this._errorMessageCell = null;
this._calloutArrowCell = null;
this._warningIconImage = null;
this._closeImage = null;
this._closeCellInnerDiv = null;
this._popupBehavior = null;
this._onShowJson = null;
this._onHideJson = null;
this._focusAttached = false;
this._isOpen = false;
this._isBuilt = false;
this._focusHandler = Function.createDelegate(this, this._onfocus);
this._closeClickHandler = Function.createDelegate(this, this._oncloseClick);
}
AjaxControlToolkit.ValidatorCalloutBehavior.prototype = {
initialize : function() {
AjaxControlToolkit.ValidatorCalloutBehavior.callBaseMethod(this, 'initialize');
var elt = this.get_element();
//
// Override the evaluation method of the current validator
//
if(elt.evaluationfunction) {
this._originalValidationMethod = Function.createDelegate(elt, elt.evaluationfunction);
this._validationMethodOverride = Function.createDelegate(this, this._onvalidate);
elt.evaluationfunction = this._validationMethodOverride;
}
// Check for failed server-side validation (indicated by non-empty ClientState)
var clientState = this.get_ClientState();
if ((null != clientState) && ("" !== clientState)) {
this._ensureCallout();
this.show();
}
},
_ensureCallout : function() {
if (!this._isBuilt) {
var elt = this.get_element();
//
// create the DOM elements
//
var elementToValidate = this._elementToValidate = $get(elt.controltovalidate);
var popupTableBody = document.createElement("tbody");
var popupTableRow = document.createElement("tr");
var calloutCell = document.createElement("td");
var calloutTable = document.createElement("table");
var calloutTableBody = document.createElement("tbody");
var calloutTableRow = document.createElement("tr");
var iconCell = document.createElement("td");
var closeCell = document.createElement("td");
var closeCellInnerDiv = this._closeCellInnerDiv = document.createElement("div");
var popupTable = this._popupTable = document.createElement("table");
var calloutArrowCell = this._calloutArrowCell = document.createElement("td");
var warningIconImage = this._warningIconImage = document.createElement("img");
var closeImage = this._closeImage = document.createElement("img");
var errorMessageCell = this._errorMessageCell = document.createElement("td");
//
// popupTable
//
popupTable.id = this.get_id() + "_popupTable";
popupTable.cellPadding = 0;
popupTable.cellSpacing = 0;
popupTable.border = 0;
popupTable.width = this.get_width();
popupTable.className = this._cssClass;
//
// popupTableRow
//
popupTableRow.className = "ajax__validatorcallout_popup_table_row";
//
// calloutCell
//
calloutCell.className = "ajax__validatorcallout_callout_cell";
//
// calloutTable
//
calloutTable.cellPadding = 0;
calloutTable.cellSpacing = 0;
calloutTable.border = 0;
calloutTable.className = "ajax__validatorcallout_callout_table";
//
// calloutTableRow
//
calloutTableRow.className = "ajax__validatorcallout_callout_table_row";
//
// calloutArrowCell
//
calloutArrowCell.className = "ajax__validatorcallout_callout_arrow_cell";
//
// iconCell
//
iconCell.className = "ajax__validatorcallout_icon_cell";
//
// _warningIconImage
//
warningIconImage.border = 0;
warningIconImage.src = this.get_warningIconImageUrl();
//
// _errorMessageCell
//
errorMessageCell.className = "ajax__validatorcallout_error_message_cell";
errorMessageCell.innerHTML = this._getErrorMessage();
//
// closeCell
//
closeCell.className = "ajax__validatorcallout_close_button_cell";
//
// closeImage
//
closeCellInnerDiv.className = "ajax__validatorcallout_innerdiv";
closeImage.src = this.get_closeImageUrl();
//
// Create the DOM tree
//
elt.parentNode.appendChild(popupTable)
popupTable.appendChild(popupTableBody);
popupTableBody.appendChild(popupTableRow);
popupTableRow.appendChild(calloutCell);
calloutCell.appendChild(calloutTable);
calloutTable.appendChild(calloutTableBody);
calloutTableBody.appendChild(calloutTableRow);
calloutTableRow.appendChild(calloutArrowCell);
popupTableRow.appendChild(iconCell);
iconCell.appendChild(warningIconImage);
popupTableRow.appendChild(errorMessageCell);
popupTableRow.appendChild(closeCell);
closeCellInnerDiv.appendChild(closeImage);
closeCell.appendChild(closeCellInnerDiv);
//
// initialize callout arrow
//
var div = document.createElement("div");
div.className = "ajax__validatorcallout_innerdiv";
calloutArrowCell.appendChild(div);
for(var i = 14; i > 0; i--)
{
var line = document.createElement("div");
line.style.width = i.toString() + "px";
div.appendChild(line);
}
//
// initialize behaviors
//
this._popupBehavior = $create(
AjaxControlToolkit.PopupBehavior,
{
positioningMode : AjaxControlToolkit.PositioningMode.Absolute,
parentElement : elementToValidate
},
{ },
null,
this._popupTable);
// Create the animations (if they were set before initialize was called)
if (this._onShowJson) {
this._popupBehavior.set_onShow(this._onShowJson);
}
if (this._onHideJson) {
this._popupBehavior.set_onHide(this._onHideJson);
}
$addHandler(this._closeCellInnerDiv, "click", this._closeClickHandler);
this._isBuilt = true;
}
},
dispose : function() {
if (this._isBuilt) {
this.hide();
if (this._focusAttached) {
$removeHandler(this._elementToValidate, "focus", this._focusHandler);
this._focusAttached = false;
}
$removeHandler(this._closeCellInnerDiv, "click", this._closeClickHandler);
this._onShowJson = null;
this._onHideJson = null;
if (this._popupBehavior) {
this._popupBehavior.dispose();
this._popupBehavior = null;
}
if (this._closeBehavior) {
this._closeBehavior.dispose();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -