Javascript验证在.Net内容页上不起作用
我想知道是否有其他人经历过以下问题 在单个未链接(到母版页).aspx页面上,我正在执行简单的JS验证:Javascript验证在.Net内容页上不起作用,javascript,validation,master-pages,client-side,Javascript,Validation,Master Pages,Client Side,我想知道是否有其他人经历过以下问题 在单个未链接(到母版页).aspx页面上,我正在执行简单的JS验证: function validateMaxTrans(sender, args) { // requires at least one digit, numeric only characters var error = true; var regexp = new RegExp("^[0-9]{1,40}(\.[0-9]{1,2})?$"
function validateMaxTrans(sender, args) {
// requires at least one digit, numeric only characters
var error = true;
var regexp = new RegExp("^[0-9]{1,40}(\.[0-9]{1,2})?$");
var txtAmount = document.getElementById('TxtMaxTransAmount');
if (txtAmount.value.match(regexp) && parseInt(txtAmount.value) >= 30) {
document.getElementById('maxTransValMsg').innerHTML = ""
args.IsValid = true;
}
else {
document.getElementById('maxTransValMsg').innerHTML = "*";
args.IsValid = false;
}
}
然后,只要我将其移动到母版页的内容页,我就会得到txtAmount为null
在尝试使用母版页/内容页执行客户端JS验证时,是否有其他方法访问DOM?查看母版页中呈现页面的源代码。许多元素都有一个像ControlX$Subcroly$txtMaxTransAmount这样的ID。。。您需要相应地调整验证。我通常只是将ID注入到客户端文档中
<script type="text/javascript">
var controls = {
'txtAmount': '<%=TxtMaxTransAmount.ClientId%>',
...
}
</script>
变量控制={
“txtAmount”:“,
...
}
我会把它放在内容区域的末尾,以确保控件已经呈现。这样,您只需使用window.controls.txtmount引用服务器端控件的标记id即可。您甚至可以直接将右侧值设置为document.getElementById(“…”)。是否使用asp文本框?如果是这样,我相信您需要做一些事情,比如
document.getElementById(“”)
希望这有帮助
汤姆是的,我正在使用ASP.Net文本框。使用var txtmount=document.getElementById('TxtMaxTransAmount');在非内容页面上运行良好-仅在独立的.Net页面上运行。我甚至使用了.net限定/生成的id:ctl00\u contentplaceholder mainbody\u Txt。。。我认为汤姆的答案可能有用,但我做了一个快速的变通,目前效果很好。