Javascript 输入不为空时运行函数
让我们从小提琴开始: 我知道,我把angular和jquery混为一谈,就像一个坏人,但根本的问题是: 我如何更优雅地执行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
$('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循环中了。这有多傻?这种解决方案的唯一问题是,如果用户在段落淡入后从输入中删除文本,则该段落仍然可见。不确定这是否真的重要。