我有第三方用户控件(验证码控件),它有一个验证码图像,里面有一个文本框。
我在我的网页中使用上述用户控件。我的网页上有3个提交按钮(验证验证码,提交页面,添加用户)。当我使用鼠标单击Validate Captcha submit按钮时,我将验证验证码是否为空并显示javascript警报。
当我在文本框中输入有效的验证码文本并在光标位于文本框中时按Enter键时出现问题。该页面只是刷新。我无法将keypress事件添加到文本框并调用Validate Captcha按钮事件,因为我正在使用我无法修改的第三方用户控件。
另外,Page.ClientScript.RegisterHiddenField(...)在我的情况下不起作用,因为我在同一页面内有另外两个提交按钮。
仅剩下选项是将这些选项包含在面板中并设置默认按钮。
如果有人有更好的选择,请告诉我。
答案 0 :(得分:0)
问候!我也使用了很多第三方控件。关于这些控件要记住的事情,它最终只是发出HTML。这意味着您可以使用DOM来访问和附加事件处理程序,例如onKeyPress。诀窍是确定您的控件创建者如何命名您正在寻找的控件,在本例中为{textbox}。实现此目的的最简单方法是简单地运行页面并查看页面源。在那里你可以找到它被渲染并发送到浏览器的名称,之后你必须使用document.getElementByID获取对象并设置你的处理程序
例:
<script>
//Place this AFTER your textbox control is declared in the HTML
//Get the textbox
var textbox = document.getElementById('nameOfRenderedControlHere');
//Assign the event handler and function you want it to call
textbox.onclick = function() { validateCaptcha(); };
function validateCaptcha()
{ //Do your Stuff here }
</script>
那应该是它......经过测试,如果你遇到问题,请告诉我。
答案 1 :(得分:0)
将验证码放在自己的<asp:Panel>
中,并为面板添加DefaultButton
属性,其中包含验证码提交按钮的ID。