2015-05-29 98 views
4

我有一個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。

回答

7

嘗試利用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

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

我已經根據你的回答編輯OP,有什麼想法? – Frayt

+0

「返回true」部分不會結束該功能;它只是爲循環返回true。因此,你總是會去「返回假」部分。嘗試使用一個變量來存儲信息,就像我在我的例子中那樣。 –

0

試試這個:

工作實例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"); 
    }); 

}); 
相關問題