检查是否任何文本框包含文本

问题描述:

我有一个HTML的结构是这样的:检查是否任何文本框包含文本

<div class="input_div_0"> 
    <input type="text" class="textbox input"> 
</div> 
<div class="input_div_1"> 
    <input type="text" class="textbox input"> 
</div> 
<div class="input_div_2"> 
    <input type="text" class="textbox input"> 
</div> 

我想写如果任何input S的包含文本

编辑

将返回真的表达式

基于Dimitar的回答我已经想出了这个:

function checkInputs() 
{ 
    $('input.textbox').each(function() { 
     if ($(this).val() !== "") { 
      return true; 
     } 
    }); 
    return false; 
} 

if (!checkInputs()) { 
     //Display message 
    } 

但每次都返回false。

尝试利用Array.prototype.some

var res = Array.prototype.some.call(document.querySelectorAll("input") 
 
      , function(el, i) { 
 
       return el.value.length > 0 
 
      }); 
 

 
console.log(res);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<div class="input_div_0"> 
 
    <input type="text" class="textbox input"> 
 
</div> 
 
<div class="input_div_1"> 
 
    <input type="text" class="textbox input"> 
 
</div> 
 
<div class="input_div_2"> 
 
    <input type="text" class="textbox input" value="0"> 
 
</div>

+1

Value.length不只是值 –

+1

您也可以在'some'函数上调用'call'方法,而不是使用'slice'。 'Array.prototype.some.call(document.querySelectorAll(“input”),fn)' – undefined

$('input[type="text"]').each(function() { 
    console.log(!!$(this).val()); 
}); 

function checkInput(){ 
    var result = false; 
    $('input.textbox').each(function() { 
     if($(this).val() !== ""){ 
     result = true; 
     }; 
    }); 
    return result; 
}; 
+0

我已经根据你的回答编辑OP,有什么想法? – Frayt

+0

“返回true”部分不会结束该功能;它只是为循环返回true。因此,你总是会去“返回假”部分。尝试使用一个变量来存储信息,就像我在我的例子中那样。 –

试试这个:

工作实例https://jsfiddle.net/d313m9vL/

$(function(){ 
    function isEmpty(){ 
     var inputs = $("input[type=text]"); 
     if(inputs.val().length === 0) 
      return true; 
    } 

    $("button") 
    .on("click", function(){ 
     if(isEmpty) alert("error"); 
    }); 

});