这是我检查邮政编码的功能。当一个空值进来时,我不断得到“需要对象”有谁知道我哪里出错?
aspx标签 -
asp:CustomValidator
ID="cv_zipcode"
runat="server"
ControlToValidate="tb_zipcode"
ClientValidationFunction="ValidateZipcode"
ValidateEmptyText="true"
Display="Dynamic"
ValidationGroup="vgroup">
</asp:CustomValidator>
function ValidateZipcode(sender, args) {
var regZipcode = '\d{5}'
var zipcode = document.getElementById(sender.id.replace(/cv_/, "tb_"));
if ((zipcode.value == "ZipCode") || (zipcode.value.length == null) || (zipcode.value.length == "")) {
zipcode.style.backgroundColor = "#f6e086";
args.IsValid = false; return;
} else {
args.IsValid = true;
zipcode.style.backgroundColor = "white";
}
}
答案 0 :(得分:1)
我不确定哪个值确实为null,但一般来说,如果你有一个变量x,它可能是null,也可能不是null,并且你想用x做一些事情,你可以这样做:
x != null && do_something_with(x)
如果x == null
,则返回false并且不尝试执行do_something_with()
。否则,此表达式返回值do_something_with(x)
。
如果您只是do_something_with(x)
,并且x为空,并且do_something_with()
不期望为空,则可能会出错。
修改强>
尝试:
if ((zipcode == null) || (zipcode.value == null) || [everything else])
答案 1 :(得分:0)
zipcode.value.length返回一个整数
我认为你应该
if ((zipcode.value == "ZipCode") || (zipcode.value.length == 0))
答案 2 :(得分:0)
我对这一行有点怀疑:
if ((zipcode.value == "ZipCode") || (zipcode.value.length == null) || (zipcode.value.length == "")) {
请改为尝试:
if ((zipCode.value == null) || (zipcode.value== "") || (zipcode.value.length == 0)) {
答案 3 :(得分:0)
该错误消息通常表示您已尝试获取或设置属性或调用非对象的方法,当您认为引用对象的变量为null时,往往会发生这种情况。未定义。也就是说,如果someVariable
为空或未定义,则您不能说someVariable.someProperty
。
如果.getElementById()
找不到匹配的元素,则返回null,所以在这一行中:
var zipcode = document.getElementById(sender.id.replace(/cv_/, "tb_"));
zipcode
可能设置为null,如果是,则所有尝试访问zipcode
和zipcode.value
等zipcode.style
属性的尝试都将失败。
如果参数args
为空或未定义,则尝试设置args.IsValid
将失败,类似地,如果参数sender
为空或未定义,则sender.id
将失败。
所以,如果你有一个可能为null的变量,你应该在尝试用它做任何其他事情之前测试它。