我正在通过外部javascript文件在asp.net中进行验证。如何将值传递给外部javascript文件中的函数?
我的asp代码是:
<asp:TextBox runat="server" ID="txtInput"></asp:TextBox>
<asp:Button runat="server"
OnClientClick="javascript:phonenumber(document.getElementByID('<%txtInput.text %>'))"
Text="Click"/>
当我点击此按钮时,它应该显示警告消息,但它没有。请告诉我我做错了什么。
我的Javascript代码是:
function phonenumber(inputtxt)
{
var phoneno = /^\d{10}$/;
if(inputtxt.value.match(phoneno))
{
return true;
}
else
{
alert("Not a valid Phone Number");
return false;
}
}
答案 0 :(得分:1)
另一个选项:将文本框ClientIDMode
设置为Static
,只需通过ID将输入字段引用为txtInput,这样就可以避免名称错位并使输入字段更加JS友好,这样:
<asp:TextBox runat="server" ID="txtInput" ClientIDMode="Static"></asp:TextBox>
<asp:Button runat="server" OnClientClick="phonenumber()" Text="Click"/>
呈现为:(注意文本输入上的id)
<input name="ctl00$ctl00$MainContent$txtInput" type="text" id="txtInput">
<input type="submit" name="ctl00$ctl00$MainContent$Button1" value="Click" onclick="phonenumber();" id="MainContent_Button1">
另请注意,该按钮呈现为提交类型,无论如何都会强制回发。
yiou可能只想使用普通<button>
html标记和普通onclick='phonenumber()'
来避免回发,因为即使您选择使用属性<asp:Button>
呈现UseSubmitBehavior="False"
,它仍会注入您的OnClientClick
代码后面的回发。
JS:
function phonenumber()
{
var phoneNumText = document.getElementById('txtInput');
var phoneno = /^\d{10}$/;
if(phoneNumText.value.match(phoneno))
return true;
else
{
alert("Not a valid Phone Number");
return false;
}
}
答案 1 :(得分:0)
这里有几个问题。首先要记住,<%= txtInput.text %>
将产生一个看起来像javascript:phonenumber()
的输出,因为文本框可能在呈现页面时没有值。即使用户更改了文本框,也不会在该函数调用中反映出来。
其次,您不需要javascript:
部分。如前所述,它区分大小写。第三,正则表达式的JavaScript代码缺少一些括号。
尝试这样的事情:
function ValidatePhone(element){ var el = document.getElementById(element);
var phoneno = "/^\d{10}$/";
if (el.value.match(phoneno)) {
alert("Valid");
return true;
} else {
alert("Not a valid Phone Number");
return false;
}
}
<asp:TextBox runat="server" ID="txtInput" ClientIDMode="Static" />
<asp:Button runat="server" OnClientClick="ValidatePhone('txtInput');" Text="Test" />
</div>
</form>
注意:我没有测试你的正则表达式函数。