【问题标题】:Javascript Validation not working on .Net Content PagesJavascript 验证不适用于 .Net 内容页面
【发布时间】:2010-02-01 22:40:29
【问题描述】:

我想知道是否有其他人遇到过以下问题。

在单个非链接(到母版页).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;
        }
    }

然后,当我将其移至母版页的内容页时,我得到 txtAmount 为空。

在尝试使用主页面/内容页面执行客户端 JS 验证时,是否有不同的方式来访问 DOM?

【问题讨论】:

    标签: javascript validation master-pages client-side


    【解决方案1】:

    在母版页中查看呈现页面的源代码。许多元素将具有像 ControlX$SubControlY$txtMaxTransAmount 这样的 ID ...您需要相应地调整您的验证。我通常只会将 ID 注入到客户端文档中。

    
    <script type="text/javascript">
    var controls = {
      'txtAmount': '<%=TxtMaxTransAmount.ClientId%>',
      ...
    }
    </script>
    

    我会把它放在内容区域的末尾之前,以确保控件已经呈现。这样您就可以简单地使用 window.controls.txtAmount 来引用服务器端控件的标签 ID。您甚至可以直接将右侧值设为 document.getElementById('...')。

    【讨论】:

      【解决方案2】:

      你在使用 asp 文本框吗?如果是这样,我相信你需要做一些像document.getElementById('&lt;%= txtMaxTransAmount.ClientID %&gt;') 这样的事情。

      希望这会有所帮助 汤姆

      【讨论】:

      • 是的,我正在使用 ASP.Net 文本框。使用 var txtAmount = document.getElementById('TxtMaxTransAmount');在非内容页面上工作正常 - 只是一个独立的 .Net 页面。我什至使用了 .net 限定/生成的 id:ctl00_ContentPlaceHolderMainBody_Txt... 我认为 Tom 的回答可能有效,但我做了一个快速的解决方法,目前工作正常。
      猜你喜欢
      • 1970-01-01
      • 2017-09-06
      • 2014-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 2020-02-10
      • 2016-07-03
      相关资源
      最近更新 更多