TypeError: Unable to get value of the property 'test': object is null or undefinedundefined
TypeError: Unable to get value of the property 'test': object is null or undefinedundefined
我有一个函数可以通过一组正则表达式计算字符串。这些正则表达式作为它们自己的对象包装在 charRules
.
中
如果字符串无效,return false,否则 return true。
示例有效字符串:1234567890123K
无效字符串示例:!@#$%^&*!!!&H5
当用户在文本输入中键入他们的值时,IE8 在控制台中抛出错误,
TypeError: Unable to get value of the property 'test': object is null or undefinedundefined
IE9+、Chrome、Firefox、Safari 正常工作。
逻辑作为指令实现。这是附加到范围的核心逻辑,
scope.validate = function(value) {
// Letters and special characters not allowed per country.
var charRules = {
br: {
haveLetters: /[a-zA-Z]/,
haveSpecials: /[!@$%^&*()_+|~=`\#{}\[\]:";'<>?,]/,
minMaxLength: /^.{12,25}$/
},
cl: {
haveLetters: /[a-jl-zA-JL-Z]/,
haveSpecials: /[!@$%^&*()_+|~=`\#{}\[\]:";'<>?,\/]/,
minMaxLength: /^.{12,25}$/
},
mx: {
haveLetters: /[]/,
haveSpecials: /[!@$%^&*()_+|~=`\#{}\[\]:";'<>?,\/.-]/,
minMaxLength: /^.{12,25}$/
},
pr: {
haveLetters: /[a-zA-Z]/,
haveSpecials: /[!@$%^&*()_+|~=`\#{}\[\]:";'<>?,\/.]/,
minMaxLength: /^.{12,25}$/
}
};
if (charRules[country]) {
if (charRules[country].haveLetters.test(value) || charRules[country].haveSpecials.test(value) || !charRules[country].minMaxLength.test(value)) {
return false;
} else {
return true;
}
}
};
country
变量是全局定义的。适用于 HTML 的指令是 rut="mx"
适用于此HTML,
<input type="text" id="address_rut" rut="mx" class="input-xlarge" ng-switch-when="mx" ng-model="rutnumber.taxIDNumber" ng-show="editing" required>
对于导致字符串值仅在 IE8 中无法解释的原因有任何想法吗?
在上面的if条件下,试试
null!=charRules[country].haveLetters.exec(value) || null!=charRules[country].haveSpecials.exec(value) || (value.length>12 && value.length<25)
as javascript test() 在某些旧版本的 IE 中不起作用。
Internet Explorer 8 次抛出:
Expected ']' in regular expression
尝试在正则表达式中使用空括号时。
/[]/
您应该尝试更具体地说明您不想在其中匹配的字符
诸如此类,根据您的需要,您可能需要添加更多排除条件:
/[^\w^\w]/
我有一个函数可以通过一组正则表达式计算字符串。这些正则表达式作为它们自己的对象包装在 charRules
.
如果字符串无效,return false,否则 return true。
示例有效字符串:1234567890123K
无效字符串示例:!@#$%^&*!!!&H5
当用户在文本输入中键入他们的值时,IE8 在控制台中抛出错误,
TypeError: Unable to get value of the property 'test': object is null or undefinedundefined
IE9+、Chrome、Firefox、Safari 正常工作。
逻辑作为指令实现。这是附加到范围的核心逻辑,
scope.validate = function(value) {
// Letters and special characters not allowed per country.
var charRules = {
br: {
haveLetters: /[a-zA-Z]/,
haveSpecials: /[!@$%^&*()_+|~=`\#{}\[\]:";'<>?,]/,
minMaxLength: /^.{12,25}$/
},
cl: {
haveLetters: /[a-jl-zA-JL-Z]/,
haveSpecials: /[!@$%^&*()_+|~=`\#{}\[\]:";'<>?,\/]/,
minMaxLength: /^.{12,25}$/
},
mx: {
haveLetters: /[]/,
haveSpecials: /[!@$%^&*()_+|~=`\#{}\[\]:";'<>?,\/.-]/,
minMaxLength: /^.{12,25}$/
},
pr: {
haveLetters: /[a-zA-Z]/,
haveSpecials: /[!@$%^&*()_+|~=`\#{}\[\]:";'<>?,\/.]/,
minMaxLength: /^.{12,25}$/
}
};
if (charRules[country]) {
if (charRules[country].haveLetters.test(value) || charRules[country].haveSpecials.test(value) || !charRules[country].minMaxLength.test(value)) {
return false;
} else {
return true;
}
}
};
country
变量是全局定义的。适用于 HTML 的指令是 rut="mx"
适用于此HTML,
<input type="text" id="address_rut" rut="mx" class="input-xlarge" ng-switch-when="mx" ng-model="rutnumber.taxIDNumber" ng-show="editing" required>
对于导致字符串值仅在 IE8 中无法解释的原因有任何想法吗?
在上面的if条件下,试试
null!=charRules[country].haveLetters.exec(value) || null!=charRules[country].haveSpecials.exec(value) || (value.length>12 && value.length<25)
as javascript test() 在某些旧版本的 IE 中不起作用。
Internet Explorer 8 次抛出:
Expected ']' in regular expression
尝试在正则表达式中使用空括号时。
/[]/
您应该尝试更具体地说明您不想在其中匹配的字符 诸如此类,根据您的需要,您可能需要添加更多排除条件:
/[^\w^\w]/