我需要验证ASP.NET项目中的DropDownList,并尝试使用JavaScript,即使我以前从未使用过它。
我正在使用以下ASP声明和代码JavaScript:
ASP声明:
<asp:DropDownList ID="ddl1" runat="server" onprerender="ddl1_PreRender" ValidationGroup="AddNewCollection">
</asp:DropDownList>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Choose Type!"
ControlToValidate="ddl1" ForeColor="Red" ValidationGroup="AddNewCollection" ClientValidationFunction="clientSideCheckValue"></asp:CustomValidator>>
JavaScript代码:
<script type="text/javascript">
function clientSideCheckValue(source, args)
{
var result1 = args.Value;
var rsult2 = document.getElementById("ddl1").value;
if (result2 == null) {
args.IsValid = false;
return true;
}
args.IsValid = true;
}
</script>
我对上面提到的代码有两个问题:
1.为什么当我打印此行的代码 var result1 = args.Value; intelisense时,我不会选择“值”扩展名。
2.这行JavaScript代码 var rsult2 = document.getElementById(“ddl1”)。value;
我收到此错误消息 Microsoft JScript运行时错误:需要对象。您知道为什么我遇到此问题以及如何解决此问题?
提前谢谢。
答案 0 :(得分:2)
intelisense无法知道args具有哪些属性/方法,因此它无法为您提供选项。
很可能你正在使用母版页,在这种情况下,元素的id值会改为像ct100_ddl1
这样的东西,不能完全记住我的顶部头。
建议你使用一个不错的浏览器开发这个东西,chrome或FF + firebug,这样你就可以检查html并调试js。
答案 1 :(得分:1)
@Paul:“intelisense无法知道args具有哪些属性/方法,因此它无法为您提供选项。”绝对正确。
@迈克尔:
假设您的JavaScript位于.aspx标记中,请将您的行更改为var rsult2 = document.getElementById(“&lt;%= ddl1.ClientID”%&gt;)。value;。这将在脚本块中呈现DropDownList的实际客户端ID。
此外,您似乎只是确保选择了一个选项。添加<asp:RequiredFieldValidator />
并将ControlToValidate
属性设置为“ddl1”会更容易,如果这就是你要做的全部。
希望这有帮助。