我不知道我的firefox上发生了什么!
我的aspx和javascript代码是这样的:
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
<script type="text/javascript">
function a() {
alert('a');
//alert(event.which);
//alert(event.keyCode);
//alert(event.charCode);
}
function b() {
alert('b');
//alert(event.which);
//alert(event.keyCode);
//alert(event.charCode);
}
function c() {
alert('c');
//alert(event.which);
//alert(event.keyCode);
//alert(event.charCode);
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server" onkeyup="a()"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server" onkeydown="b()"></asp:TextBox>
<asp:TextBox ID="TextBox3" runat="server" onkeypress="c()"></asp:TextBox>
</div>
</form>
</body>
</html>
当我在文本框1,2,3中键入内容时,我只看到第一个警报(意思是a,b,c)。
问题是什么?
感谢未来的进步......
答案 0 :(得分:4)
它适用于IE,因为event
是一个全局变量。
在Firefox中,事件对象被传递给事件处理程序,因此您必须使该函数接受一个参数:
function a(event) {
event = event || window.event // IE does not pass event to the function
alert('a');
alert(event.which);
alert(event.keyCode);
alert(event.charCode);
}
在你的HTML中,你必须写:
<asp:TextBox ID="TextBox1" runat="server" onkeyup="a(event)"></asp:TextBox>
顺便说一下。你可以通过使用Firebug轻松发现这一点。它在控制台中抛出错误。
答案 1 :(得分:0)
我还试图为FireFox和IE获取类似的功能。对我有用的是使用关键字event
作为函数调用某个javascript函数的输入参数。
我想要的是启动一个新的.js
文件,该文件将保存我的所有javascript,以便我的所有表单都可以调用其中的函数。我的实现只允许从文本输入框中使用数字,字母和短划线,CR和BS键。这是我用过的javascript代码:
//This function filters out character inputs from client-side
//that do not include a-z, A-Z, 0-9 and '-' (dash) and backspace
function charFilter(event) {
event = event || window.event || event.which || event;
//alert(event);
var unicode;
if (event.charCode) unicode = event.charCode;
else if (event.which) unicode = event.which;
else if (event.keyCode) unicode = event.keyCode;
else if (event) unicode = event;
// unicode must be: 0-9 OR A-Z
OR a-z OR - OR BS OR CR
if ((unicode > 47 && unicode < 58) || (unicode > 64 && unicode < 91) || (unicode > 96 && unicode < 123) || unicode == 45 || unicode == 8 || unicode == 13) {
return true;
}
else return false;
}
运行表单Default.aspx
(Default.aspx.vb
)的代码现在包含以下Sub:
Protected Sub Page_load(ByvVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
'some code
'Filter characters in text search field (client side)
Dim t As Type = Me.GetType()
Me.Page.ClientScript.RegisterClientScriptInclude("t", ResolveUrl("~/JScript.js"))
txtSearch.Attributes.Add("OnKeyPress", "return charFilter(event)")
'rest of code
End Sub
我认为其他提交的代码要干净得多,但这显示了一个将javascript函数放在单独路径中的示例。请注意,.js
文件的路径对您来说会有所不同,我只是选择了默认位置。