我正在使用声纳分析我的代码,并在以下函数中遇到错误:
$(function () {
$("#SSNCollection input[type=text]").keydown(function (evt) {
var IsNullEmptyText = "true";
var ssntxtArrayText = [];
var txtLength = 0;
$("#SSNCollection input[type=text]").each(function () {
var _tempValues = $(this).val().toString().replace(/[-]/g, '').trim();
if (!isNaN(this.value.toString().replace(/[-]/g, '').trim())) {
var _temptxtlength = this.value.toString().replace(/[-]/g, '').trim().length;
ssntxtArrayText.push(_tempValues);
}
});
$.each(ssntxtArrayText, function (index, value) {
if (value.length >= 0) {
$('#resultValidation').css({
'display': 'none',
});
return false;
} else {
$("#resultValidation").removeAttr("style");
}
});
});
});
问题始于
if (value.length >= 0) {
。因为数组长度将始终> = 0,所以if
和后面的else
是不必要的。因此我将语句更改为
$.each(ssntxtArrayText, function (index, value) {
$('#resultValidation').css({
'display': 'none',
});
return false;
});
我现在的问题是,有人告诉我应该使用
addClass('hidden')
和removeClass('hidden')
,因为我可能毕竟需要else语句。但是我不确定在这种情况下如何利用它们。有任何想法吗?谢谢! 最佳答案
隐藏类通常包含在CSS框架(如Bootstrap)中。如果您不使用Bootstrap(或不确定),只需将以下CSS添加到您的项目CSS文件中即可。
.hidden { display:none!important; }
或内联html版本
<style>.hidden { display:none!important; }</style>
关于使用条件逻辑的注意事项-在检查您的代码之后,我可以确认value变量未返回数组。实际上,它确实返回一个字符串值,这意味着检查长度是否大于或等于0是适当的。如果要在运行
$.each
之前检查数组长度,只需将$.each
包装在if(ssntxtArrayText.length > 0)
语句中即可。下面的示例演示使用.addClass()和.removeClass()并在运行之前检查数组是否具有任何值的正确实现。if(ssntxtArrayText.length > 0) {
$.each(ssntxtArrayText, function (index, value) {
if (value.length >= 0) {
$('#resultValidation').addClass('hidden'); //hide
return false;
} else {
$("#resultValidation").removeClass('hidden'); //unhide
}
});
}
注意:如果您要检查有效的社会保险号,我建议确保该值的长度为9个字符。可以这样做:
if (value.length == 9) {