Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 输入不为空时运行函数_Javascript_Jquery - Fatal编程技术网

Javascript 输入不为空时运行函数

Javascript 输入不为空时运行函数,javascript,jquery,Javascript,Jquery,让我们从小提琴开始: 我知道,我把angular和jquery混为一谈,就像一个坏人,但根本的问题是: 我如何更优雅地执行javascript,以便在填写完所有输入后在段落中淡出 目前,代码如下所示: $('input').focusout(function(){ var allInput = $('input') var inArr = [] for (var i = 0; i < allInput.length; i++) { inArr.pus

让我们从小提琴开始:

我知道,我把angular和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解决方案。

建议的改进:

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);
    });
});

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

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);
});

我也很喜欢你的答案。你说得对。我甚至没有意识到我已经将变量声明放在for循环中了。这有多傻?这种解决方案的唯一问题是,如果用户在段落淡入后从输入中删除文本,则该段落仍然可见。不确定这是否真的重要。