我获得了以下伪代码,以便获得具有焦点的表单,并且只允许我想要提交的表单:
<script> var currentForm = document.forms[0];</script>
<form ...><input onfocus="currentForm = this.form;"/></form>
<form ...><input onfocus="currentForm = this.form;"/></form>
function globalKeyPressed(event) {
if (event.keyCode == ENTER) { // This is pseudo-code, check how to really do it
currentForm.submit();
}
}
我将如何为VB.net执行此操作,因为VB.net不接受System.Windows.Forms.KeyPressEventArgs。我还想补充一点,我的网站上不能有多个表单,因为它会破坏loginview。所以我的2个单独的'形式'实际上只是一个loginview,然后是一个asp:textbox和asp:按钮,没有表单。
答案 0 :(得分:2)
以上看起来像是在客户端完成的javascript函数,而不是服务器端事件。如果是这种情况,那么VB.NET就没有区别了,因为它也会使用Javascript作为客户端语言。
您需要做的就是将客户端点击事件连接到您的按钮并按照您的方式运行代码,将其更改为(从我的顶部开始)
if (event.keyCode == 13){
//Submit form.
}
您可以在表单的Page_Load事件上使用attributes.add添加客户端点击,例如:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
textbox1.attributes.add("onKeyUp", "globalKeyPressed")
End Sub
然后,只要按下该键,就会从文本框中调用globalKeyPressed()事件。然后globalKeyPressed()事件将导致提交当前表单。
答案 1 :(得分:0)
使用ASP.Net,整个页面总是发布,通常是回到自身。您的VB.Net代码必须处理您放在页面上的服务器控件中的事件,例如按钮的click事件或LoginView的ViewChanged事件。