我有这个代码在函数valid_name不为true时显示错误,并在模糊时valid_name
变为true时隐藏错误;
错误显示在最初隐藏的div中。
出现错误但它不会消失。
function valid_name() {
if (($("#name").length > 5) && ($("#name").length < 20)) {
return true;
} else {
return false;
}
}
$(document).ready(function() {
$('#name').on('blur', function() {
if (!valid_name())
$("#name_erors").text("invalid name").show();
if (valid_name())
$("#name_erors").hide();
});
});
答案 0 :(得分:5)
我认为
$("#name").length
应该
$("#name").val().length
原因$('#name').length
计算找到的元素,但要计算你需要使用的字符
$("#name").val().length
所以功能应该是
function valid_name() {
if (($("#name").val().length > 5) && ($("#name").val().length < 20)) {
return true;
} else {
return false;
}
}
您也可以
function valid_name() {
var value = $('#name').val(), len = value.length;
return len > 5 && len < 40;
}
答案 1 :(得分:2)
使用jQuery选择时,返回的对象包含元素。在这种情况下,只有一个,所以length
将始终为1.您可能想要选择值的长度。
那就是说,这是一个fully optimised Vanilla JS解决方案:
document.getElementById('name').onblur = function() {
var notice = document.getElementById('name_errors');
if( this.value.length > 5 && this.value.length < 20) notice.style.display = "none";
else {
notice.style.display = "block"; // or "inline", as applicable
notice.innerHTML = "Invalid name length (must be between 6 and 19 characters)";
}
};
此代码应放置在:
name
元素defer
属性window.onload
处理程序答案 2 :(得分:1)
我认为你的函数总是返回false
。尝试,
function valid_name() {
if (($("#name").val().length > 5) && ($("#name").val().length < 20)) {
return true;
}
else {
return false;
}
}
$(document).ready(function() {
$('#name').on('blur', function() {
if (!valid_name())
$("#name_erors").text("invalid name").show();
if (valid_name())
$("#name_erors").hide();
});
});
.val()
给出输入字段的值,您应该检查值的长度。
$('#name').length
将返回带有id名称的元素的数量,肯定小于5。
答案 3 :(得分:1)
你将div id拼写为“name_erors”,这看起来像拼写错误。我会首先仔细检查html中的拼写。