当我试着解释这个时,请耐心等待。我有这个包含多个功能的javascript文件。没什么好看的,只有少数改变了文本框颜色,还有一个我要运行正则表达式检查。
问题:我有一个文本框,我只想检查数字和字母。这是我用来做的简单函数 -
/ *这位于外部JS文件* /
中function checkTextBox()
{
var userInfo = document.document.getElementById('TextBox1');
var pattern = new RegExp(/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/);
//unacceptable chars
if (pattern.test(userInfo)) {
alert("Please only use standard alphanumerics");
return false;`enter code here`
}
return true; //good user input
}
var elLicenseHolder = document.getElementById('TextBox1');
elLicenseHolder.addEventListener('blur', checkTextBox, false);
相当简单易行。但是,我在运行页面时和页面加载后出现此错误。
&#34;未捕获的TypeError:无法读取属性&#39; addEventListener&#39;为null 在VM109 index.js:48&#34;
我意识到这可能是由于TextBox为空而发生的,然而,在输入错误数据并点击开箱后,它是否仍然会激活?执行addEventListener的blur部分?
此外,当直接放在ASP页面上时,减去addEventListener的功能相同。像这样。
<p class="form_labels">Product Supported --
<asp:TextBox ID="TextBox1" class="ddl_text_small" runat="server" onblur="checkTextBox();" ></asp:TextBox>
</p>
<script>
function checkTextBox() {
var userInfo = document.document.getElementById('TextBox1');
var pattern = new RegExp(/[~`!#$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/); //unacceptable chars
if (pattern.test(userInfo)) {
alert("Please only use standard alphanumerics");
return false;
}
return true; //good user input
}
</script>
当我刷新页面并再试一次时,这很好用。
大家都知道,我试过在整个页面上放置标签。从头部到相关文本框之前和之后,以及页面底部。我愚弄了身体和窗口的onload事件。似乎没什么用。我可能不得不求助于在ASP页面上保留JS,但如果我可以在外部文件中使用它,我会更喜欢它。任何帮助都是极好的。谢谢。
答案 0 :(得分:0)
它无法正常工作,因为默认情况下ASP.Net会更改服务器控件的ID。您可以将ClientIDMode
属性设置为static
来停用它。
https://msdn.microsoft.com/en-us/library/system.web.ui.control.clientidmode(v=vs.110).aspx
另外,请务必在html文档的末尾加载javascript文件。