让我们从小提琴开始: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解决方案。
答案 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);
});
});
答案 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);
});