Javascript验证不适用于.Net内容页面

时间:2010-02-01 22:40:30

标签: 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})?$");
        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?

2 个答案:

答案 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 %>')之类的事情。

希望这会有所帮助 汤姆