1

我的 JavaScript 代码出现问题,已将其移至 ASP 中的内容页面。

它在独立页面上完美运行。

<script type="text/javascript">
        function validateQ12(oSrc, args) {
            var rbtnList = document.getElementsByName('rbtn12');
            var noClicked = false;
            for (var i = 0; i < rbtnList.length; i++) {
                if (rbtnList[i].checked) {
                    noClicked = rbtnList[i].value == "No";
                    break;
                }
            }
            if (noClicked) {
                args.IsValid = true;                   
            }
            else
                args.IsValid = args.Value.trim().length > 0;                   
        }
    </script> 

我已经浏览了两个页面上的 html,在一个有效的页面上

<input id="rbtn12_1" type="radio" name="rbtn12" value="No" checked="checked" onclick="Q12iNo();">

内容页面中的新内容页面有

<input id="MainContent_rbtn12_1" type="radio" name="ctl00$MainContent$rbtn12" value="No" checked="checked" onclick="Q12iNo();">

显然,名称更改一定是导致问题的原因。如何在我的 javascript 代码中引用这个新名称?

4

2 回答 2

0

要获取渲染的元素名称,请使用以下命令:

<%= rbtn12.UniqueID %>

但是,在您的情况下,这可能仍然不起作用,因为您似乎需要遍历每个单选按钮项目。

请参阅以下帖子:

找出是否使用 JQuery 检查了单选按钮?

其中显示了如何确定单选按钮集合是否具有选定值。

于 2013-03-15T09:12:31.063 回答
0

您可以在控件中添加一个类名并使用 getElementByClassName 吗?

<input id="MainContent_rbtn12_1" type="radio" name="ctl00$MainContent$rbtn12" value="No" checked="checked" onclick="Q12iNo();" CssClass="Radio">

<script type="text/javascript">
        function validateQ12(oSrc, args) {
            var rbtnList = document.getElementsByClassName('Radio');
            var noClicked = false;
            for (var i = 0; i < rbtnList.length; i++) {
                if (rbtnList[i].checked) {
                    noClicked = rbtnList[i].value == "No";
                    break;
                }
            }
            if (noClicked) {
                args.IsValid = true;                   
            }
            else
                args.IsValid = args.Value.trim().length > 0;                   
        }
    </script> 
于 2013-03-15T09:16:41.330 回答