Nig*_*888 3 javascript asp.net jquery onclick validationgroup
我正在尝试替换 ASP.NET 中的 JavaScript onclick 事件处理程序,该处理程序在使用验证控件时添加到按钮控件。这是在这种情况下从 ASP.NET 输出到 HTML 中的内容:
<input type="image" name="ibSubmit1" id="ibSubmit1" src="button-green-submit.gif" onclick="showProgress1();WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ibSubmit1", "", true, "Group1", "", false, false))" style="border-width:0px;" />
Run Code Online (Sandbox Code Playgroud)
我仔细查看了,不幸的是,在将函数服务器端注入到页面之前,似乎没有办法修改它。
由于我正在开发一个控件并希望它是非侵入性和自包含的,并且我有兴趣获取WebForm_PostBackOptions 对象的validationGroup参数,因此似乎最简单的解决方案是使用 JavaScript 将 WebForm_DoPostBackWithOptions 函数名称替换为我的自定义包装函数并保留所有其余参数信息不变 - 然后我可以提取我感兴趣的信息,调用我的自定义函数,然后将调用转发到 WebForm_DoPostBackWithOptions。
注意:我使用 jQuery 来构建自定义函数,因此如果有更简单的方法使用 jQuery 来实现此操作,我会考虑这个选项。
这是我尝试替换 onclick 事件处理程序的代码(不起作用):
$('[onclick*=WebForm_DoPostBackWithOptions]').each(function() {
var txt = this.onclick;
txt = txt + '';
txt = txt.replace('WebForm_DoPostBackWithOptions','ml_DoPostBackWithOptions');
this.onclick = eval(txt);
});
Run Code Online (Sandbox Code Playgroud)
使用alert(),我验证了文本是否已正确更改,但是无论我是否使用eval() 函数,onclick 处理程序似乎都无法将其识别为JavaScript。
我想过使用正则表达式来获取validationGroup值,但这似乎如果我能让它工作的话它会更加优雅和灵活......
注意:如果我的控件有一种方法可以询问它所在的页面,以找到将回发的所有按钮(无论它们是什么类型的按钮),以便我可以检索服务器端的属性,这也是我会考虑的。
当解析 HTML 时,属性值被包装在一个函数中,因此很难取回原始字符串。您可以获得函数的字符串表示形式,但随后您必须解析函数内的代码。
为什么不重新定义被调用的函数呢?将其放在页面末尾:
<script type="text/javascript">
(function(){
// keep the original
var previous = WebForm_DoPostBackWithOptions;
WebForm_DoPostBackWithOptions = function(options) {
// do what you want with the options here
// then call the original
previous(options);
}
})();
</script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1721 次 |
最近记录: |