我正在开发一个应用程序,其中我有一个带有很多文本框的asp.net表单。我需要对所有文本框使用相同的JavaScript函数来验证它是否包含任何非字母字符。如何我可以对所有文本框使用相同的方法。我被困在如何将文本框的id传递给JavaScript函数?
<script type="text/javascript" language="JavaScript">
function CheckAlphabet(textboxId)
{
if (!document.getElementById('<%=textboxId.ClientId %>').value.match("/^[a-zA-Z]+/"))
return false;
}
</script>
asp.net代码部分是这样的....
<asp:TextBox CssClass="select" ID="TxtEmpFirstname" onkeydown="CheckAlphabet(TxtEmpFirstname)"
runat="server" MaxLength="100"></asp:TextBox>
javascript代码出错了。请帮助传递asp.net文本框的ID。我需要对许多文本框使用相同的javascript函数来验证文本框中的非字母字符。请帮忙
答案 0 :(得分:1)
正确的方法是仔细查看代码并查看服务器上运行的内容以及浏览器中运行的内容(即打印代码并以2种颜色标记)...
你onkeydown =“CheckAlphabet(TxtEmpFirstname)”是服务器端和客户端意图的混合:你应该使用服务器端代码而不是TxtEmpFirstname构造客户端ID,并将其从函数本身中删除。
onkeydown="CheckAlphabet('<%=textboxId.ClientId %>')"
答案 1 :(得分:1)
试试这个:
function CheckAlphabet(textboxId)
{
if (!textboxId.value.match("/^[a-zA-Z]+/"))
return false;
}
<asp:TextBox CssClass="select" ID="TxtEmpFirstname" onkeydown="javascript:CheckAlphabet(this)" runat="server" MaxLength="100"></asp:TextBox>
答案 2 :(得分:0)
你走在正确的轨道上。尝试这样的事情:
<script type="text/javascript" language="JavaScript">
function CheckAlphabet(textboxId){
if (!document.getElementById(textboxId).value.match("/^[a-zA-Z]+/")) return false;
}
</script>
<asp:TextBox CssClass="select" ID="TxtEmpFirstname" onkeydown='CheckAlphabet("<%=TxtEmpFirstname.ClientId %>")' runat="server" MaxLength="100"></asp:TextBox>
请注意,客户端脚本仅引用传递给它的变量的内容。当TextBox
呈现给页面时,内联标记(<%=...%>
)将转换为input
字段的客户端ID。
另请注意报价用法。在服务器端标记的属性中放置内联服务器端命令时,必须用单引号包装该属性,然后使用双引号表示最终输出的文字字符串。
答案 3 :(得分:-1)
使用它:
function CheckAlphabet(textboxId)
{
if (!document.getElementById(textboxId).value.match("/^[a-zA-Z]+/"))
return false;
}
<asp:TextBox CssClass="select" ID="TxtEmpFirstname" onkeydown="CheckAlphabet(this.value)" runat="server" MaxLength="100"></asp:TextBox>
编译服务器端代码后,javascript代码将被抱怨