即使我做了console.log并且也可以识别0长度,但是这段代码也不会运行else if部分。它仍然不会显示字符串。它会给第一部分。有什么问题吗?
function check_width() {
var width= $('#plwidth').val();
if (width< 20 || width> 200) {
$('#error_width').html("Annettu luku ei kelpaa");
$('#error_width').show();
} else if (width.length === 0) {
$('#error_width').html("Täytä kenttä");
$('#error_width').show();
} else {
$('#error_leveys').hide();
}
}
答案 0 :(得分:1)
出什么问题了
问题在于$("input").val()
将始终是字符串。当您将字符串与数字进行比较(使用==
或<
等)时,javascript将应用自动类型转换-即将字符串转换为int。无法执行此操作的地方将返回零。
因此,如果您输入的内容为空而不是数字,则
"" < 20 == true
0 < 20 == true
因此它将呼叫您的第一行,并且永远不会进入width.length == 0
检查。
在这种情况下,似乎最简单的解决方案是先检查输入是否为空,即:
function check_width() {
var width= $('#plwidth').val();
if (width.length === 0) {
$('#error_width').html("Täytä kenttä");
$('#error_width').show();
} else if (width < 20 || width > 200) {
$('#error_width').html("Annettu luku ei kelpaa");
$('#error_width').show();
} else {
$('#error_width').html("").hide()
//$('#error_leveys').hide();
}
}
答案 1 :(得分:0)
width.length
似乎不正确,并且没有length
属性,除非它是字符串或数组
将else if (width.length === 0) {
替换为else if (width === 0) {