2014-07-24 3 views
0

이의이 바이올린을 시작하자실행 기능

어떻게 할 수 일단 모든 입력이 채워지면 단락에서 페이드 인하는 더 우아하게 자바 스크립트를 실행합니까?

현재 코드는 다음과 같은 : 그것은 매우 무거운 손 느낌과 내가 더 좋은 방법을 알고 싶습니다

$('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를 사용한다는 사실을 무시하고 각도를 사용하여이를 수행하십시오. 좀 더 우아한이 문제에 대한 바닐라 js 또는 js 및 jquery 솔루션을 알고 싶습니다.

+0

http://jsfiddle.net/Gytrn/4/ – adeneo

+0

나는 당신의 대답을 많이뿐만 아니라 adeneo – mschrepel

답변

0

제안 된 개선 사항 :

1) 입력하지 때마다 핸들러는 첫 번째 빈 필드 공허함에 대한 입력의

3) 빠른 네이티브 체크를 발견했을 때

2) focusout 핸들러가 반환 발사, 한 번 캐시

$(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

+0

하 석을 좋아합니다. 네가 옳아. 나는 심지어 변수 선언을 for 루프 안에 넣었다는 것을 깨닫지 못했다. 얼마나 어리석은가? – mschrepel

+0

단락이 페이드 인 된 후 입력에서 텍스트를 제거하는 경우 단락이 계속 표시 될 수 있다는 점만이 솔루션과 관련된 문제입니다. 실제로 중요한지 확실하지 않습니다. – epascarello

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