输入不为空时运行功能

时间:2014-07-24 16:01:57

标签: javascript jquery

让我们从小提琴开始:http://jsfiddle.net/Gytrn/

我知道,我在这里混合角度和jquery就像一个坏人,但基本问题是:

一旦所有输入都被填写,我怎样才能更优雅地执行javascript以淡入段落?

目前代码是这样的:

$('input').focusout(function(){
    var allInput = $('input')
    var inArr = []
    for (var i = 0; i < allInput.length; i++) {
        inArr.push($('input:eq('+i+')').val().length)
    }
    console.log(inArr);
    if(inArr.sort()[0]===0){

    } else {
        $('p').fadeIn(750)
    }
});

感觉非常沉重,我想知道更好的方法。请随意忽略我使用Angular的事实,并且有一种Angular方法可以做到这一点。我想知道一个更优雅的香草js或js和jquery解决方案。

2 个答案:

答案 0 :(得分:0)

提议的改进:

1)输入缓存一次,而不是每次处理程序触发

2)focusout处理程序在找到第一个空字段时返回

3)快速原生检查输入空虚

$(function () {
    var allInput = $('input');
    $('input').focusout(function () {
        for (var i = 0; i < allInput.length; i++) {
            if (allInput[i].value.length === 0) {
                return;
            }            
        }
        $('p').fadeIn(750);
    });
});

JSFiddle

答案 1 :(得分:0)

有很多方法可以做到这一点

var inputs = $("input");
inputs.on("change", function () {
    var allFilled = true;
    inputs.each( 
        function(){ 
            if(this.value.length===0){ 
                allFilled = false; 
                return false; //break loop
            }
        } 
    );
    $("#myParagraph").toggle(allFilled);
});