我想知道是否可以将参数传递给从AJAX扩展器(在本例中为AutoComplete)调用的javascript事件,同时保留传递的EventArgs。下面是我想说的一个简短的例子:
<... OnClientItemSelected="DoThis(somevar, eventargs);" />脚本:
function DoThis(somevar, eventargs) {
var blah = somevar;
...
var blah2 = eventargs.get_text();
}这就是我们的想法。有没有人知道怎么做或者有没有可能做到?
发布于 2011-04-26 06:45:02
我不太清楚你的要求是什么,但是……我还是要试一试。听起来您实际上想要增加传递给事件处理程序的事件数据。有许多方法可以做到这一点:
如果您使用的是jQuery:
首先,可以使用2个或3个参数调用bind()方法:
bind( eventName , eventHandler )bind( eventName , data , eventHandler )如果使用3个参数调用bind(),则第二个参数data是作为传递给事件处理程序的Event实例的.data属性传递给事件处理程序的任意对象。
其次,事件处理程序是一个闭包,其词法作用域包括在创建闭包时处于作用域内的那些变量。例如,通常将事件处理程序绑定到jQuery中的事件的方式如下所示:
$(function(){
var pi = 3.1415926 ;
var phoneticAlphbet = { a = "alpha" , b = "bravo" , c = "charlie" ,
...
x = "x-ray" , y = "yankee" , z = "zulu"
} ;
$('input:radio[name=buttonset1]').click(function(){
// at this point, the variables pi and phonetic alphabet are in-scope,
// as well as any other globals you've created
// do something here
}) ;
}) ;这是将数据传递给事件处理程序的第二种方法。
第三种方法是将数据从DOM树元素挂起。jQuery很方便地提供了data()方法来实现这一点:
.data( name , value )在包装的set.data( name )上设置值从包装的set检索值
例如,此代码段将保存页面上每个和元素的原始值:
$('input,select').each(function(){
var item = $(this) ;
item.data( 'original-value' , item.val() ) ;
}) ;设置了该值后,可以检索该值:
$('input#password').change(function(){
var item = $(this) ;
var oldValue = item.data('original-value') ;
var newValue = item.val() ;
if ( oldValue == newValue )
{
alert('the new password must be different than the old password!') ;
}
}) ;https://stackoverflow.com/questions/5783874
复制相似问题