在PostBack之后保持jQuery对象中原始值的元素
|
我将ASP.NET 3.5与残酷的UpdatePanel,“ 0”和JavaScript对象文字结合使用。
我使用ѭ0来保留事件处理程序,该事件处理程序确实在PostBack之后被触发,符合预期。
问题出在
init()
上存储在对象文字属性中的jQuery对象中,它们保留了ASP.NET PostBack之前的值。
这是我的JavaScript:
外国足协
SFAIC =
{
masterPages: { cs: \"CS_\", cp: \"CP_\" },
contentPages: { cs: \"CSContent_\", cp: \"CPContent_\" },
isSecurePage : false,
$body : undefined,
$container : undefined,
$updatePanel : undefined,
$textBox : undefined,
$errorLabel : undefined
};
SFAIC.init()
SFAIC.init = function ()
{
log( \"--> SFAIC.init() fired\" );
var self = this;
self.$body = $( \"body\" );
self.$container = self.$body.find( \"#container\" );
self.$updatePanel = self.getCSMasterElement( \"UpdatePanel1\", self.$container );
self.$textBox = self.getContentElement( \"TextBox1\" );
self.$errorLabel = self.getContentElement( \"ErrorLabel1\" );
self.$updatePanel.delegate( self.$textBox.selector, \"blur\", function ()
{
self.validateRequired( self.$textBox, self.$errorLabel );
});
self.$textBox.focus();
};
SFAIC.validateRequired()
SFAIC.validateRequired = function ( $element, $errorLabel )
{
if ( $element.val().length === 0 ) { $errorLabel.text( \"Required\" ); }
else { $errorLabel.text( \"\" ); }
};
鉴于以上所述,当触发“ 6”时,会将“ 7”分配给其jQuery对象。我想这就是我的困惑。我以为,当您调用.val()
时,它将立即返回该元素中的值。如果您调用服务器并更改控件的值,然后又返回呈现元素的更改值,则jQuery对象似乎不知道该更改?
我在这里错了吗?
我需要做些什么来保持对元素的实时引用,以便在页面回发后可以获取当前值?
根据@DaveLong编辑请求:
SFAIC.getCSMasterElement()
SFAIC.getCSMasterElement = function ( id, $context )
{
return SFAIC.getElement( SFAIC.masterPages.cs, id, $context );
};
SFAIC.getCPMasterElement()
SFAIC.getCPMasterElement = function ( id, $context )
{
return SFAIC.getElement( SFAIC.masterPages.cp, id, $context );
};
SFAIC.getContentElement()
SFAIC.getContentElement = function ( id, $context )
{
return SFAIC.getElement
(
( SFAIC.isSecurePage ) ? SFAIC.contentPages.cp : SFAIC.contentPages.cs,
id,
$context
);
};
SFAIC.getElement()
SFAIC.getElement = function ( page, id, $context )
{
selector = SFAIC.getElementIdSelector( page, id );
return ( selector )
? ( $context && $context.length )
? $context.find( selector )
: SFAIC.$body.find( selector )
: undefined;
};
SFAIC.getElementIdSelector()
SFAIC.getElementIdSelector = function ( page, id )
{
var prefix = SFAIC.getElementPrefix( page );
return ( prefix && id ) ? \"#\" + prefix + id : undefined;
};
SFAIC.getElementPrefix()
SFAIC.getElementPrefix = function ( page )
{
switch ( page )
{
case SFAIC.masterPages.cs : return SFAIC.masterPages.cs;
case SFAIC.masterPages.cp : return SFAIC.masterPages.cp + SFAIC.masterPages.cs;
case SFAIC.contentPages.cs : return SFAIC.masterPages.cs + SFAIC.contentPages.cs;
case SFAIC.contentPages.cp : return SFAIC.masterPages.cp + SFAIC.masterPages.cs + SFAIC.contentPages.cs + SFAIC.contentPages.cp;
}
};
没有找到相关结果
已邀请:
3 个回复
徐百晴墓斜
伞腹
干杯, 尼丁
嫩昧竞莫
在MasterPage的aspx中,我将body标记修改为:
在我的MasterPage的代码隐藏声明中,我添加了:
在我的MasterPage代码的Page.PreRender处理程序背后,我添加了: