我想知道是否有其他人遇到过以下问题。
在单个非链接(到主页面).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})?$");
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;
}
}
然后,只要我将其移动到Master页面的内容页面,我就会得到txtAmount为null。
尝试使用主页/内容页面执行客户端JS验证时,是否有不同的方法来访问DOM?
答案 0 :(得分:0)
查看母版页中已渲染页面的来源。许多元素都有一个像ControlX $ SubControlY $ txtMaxTransAmount这样的ID ......你需要相应地调整你的验证。我经常只是将ID注入客户端文档..
<script type="text/javascript">
var controls = {
'txtAmount': '<%=TxtMaxTransAmount.ClientId%>',
...
}
</script>
我会在你的内容区域结束前把它放在正确的位置,以确保控件已经呈现。这样您就可以使用window.controls.txtAmount来引用服务器端控件的标记ID。您甚至可以直接将右侧值设为document.getElementById('...')。
答案 1 :(得分:0)
您使用的是asp文本框吗?如果是这样,我相信你需要做document.getElementById('<%= txtMaxTransAmount.ClientID %>')
之类的事情。
希望这会有所帮助 汤姆