jQuery if语句总是求值为true

时间:2014-07-13 16:51:42

标签: javascript jquery

我正在检查表单是否有"文件"输入,如果它有一个vlue。 DOM就像:

<form id="form123">
    <div class="row">
        <input type="file">
    </div>
</form>

控制台

console.log($(formId).find('input[type = "file"]').val().length)
// prints 0

if statement

if ($(formId).find('input[type = "file"]').val().length > 0) {
// run function

它始终运行该功能!

3 个答案:

答案 0 :(得分:3)

.has()返回一个jQuery集合,而不是true / false boolean。所以使用:

if ($(formId).has('input[type="file"]').length)

.length返回.has()匹配的元素数量。

答案 1 :(得分:0)

我会使用.find(),因为它有better performance

if ($(formId).find('input[type="file"]').length > 0) {

}

修改

由于.length是一个整数,我会将它与另一个数值进行比较,而不是像其他答案一样将其评估为布尔值。

if (3 > 0)看起来比if (3)更合理,对吧?

答案 2 :(得分:-1)

结束form标签实际上是一个开放标签,你的意思是?尝试删除属性名称和值class='row'之间的空格。您也可以尝试$(formId).find(...)