2012-10-11 9 views
-1

나는이 here에 대한 또 다른 질문을 알고 있지만 이것이 저에게 맞지 않습니다.jquery each()는 첫 번째 값만 반환합니다.

저는 약 40 개의 필드가있는 매우 큰 폼과 각 필드를 개별적으로 통과하는 고통이 있습니다. 그래서 50 개의 필드를 범주로 나누고 각 입력 범주에 ID를 할당했습니다. 예를 들어, 다음과 같습니다. 10 카테고리의 10 개 필드는 표준 배송, 특송 배송, 러시 배송, 슈퍼 러시 배송의 4 가지 범주로 나뉩니다. I가 확인하는 데 사용

<form method="post" id="creation_form" action="actions/add_prices.php"> 
    .... 
</form> 

와 jQuery를 : 그래서 같은 ID를 가진 하나 개의 범주에서 가격을 모두 이름, 예를 들어 표준 배송 내 양식은 다음과 같이 정의된다

<id input type="text" name="s_qty_25" id="s_cf" /> 
<id input type="text" name="s_qty_50" id="s_cf" /> 
<id input type="text" name="s_qty_100" id="s_cf" /> 
.... and so on 

라고 다음과 같이하십시오 :

$(function() { 
$('#creation_form').submit(function(e){ 

    $("#cs_f").each(function(index, obj){ 
     var cs_f_val = $(obj).val(); 
     if(cs_f_val == ''){ 
      $(obj).attr('style', 'background:red;'); 
      valid = false; 
     } 
    }); 

    //...repeat the snipet for each 3 remaining price groups 

    return valid; 
}); 
}); 

기본적으로 필드를 빨간색으로 설정하고 제출을 취소하십시오. 그러나 첫 번째 필드 만 빨간색 배경을 얻을 것입니다! 도움말 사람들에 대한

감사합니다 :)

+1

당신은 그렇게 할 수 없습니다. 동일한 'id'를 가진 여러 요소는 허용되지 않습니다. 대신 클래스를 사용하십시오. jQuery는'id' 셀렉터가 하나의 엘리먼트에만 매치 될 것이고 더 많은 것을 찾지 않는다고 가정하기 때문에'each'의 결과 하나만 얻게됩니다. – verdesmarald

+0

고유 ID가 필요합니다. –

+0

나는 우와! 너희들 규칙! – RicardoE

답변

3

만 특정 ID로 하나 개의 필드가 있어야합니다. 그것이 이드라고 불리는 이유입니다!

대신 클래스를 사용하십시오 :

<id input type="text" name="s_qty_25" class="s_cf" /> 
<id input type="text" name="s_qty_50" class="s_cf" /> 
<id input type="text" name="s_qty_100" class="s_cf" /> 

을 다음

$(".cs_f").each 
2

첫 번째 일이 .. ID는 항상 고유해야합니다 ... 그래서 클래스를 대신

<id input type="text" name="s_qty_100" class="s_cf" /> 

과에서를 사용 귀하의 자바 스크립트, 이것을보십시오

$(function() { 
$('#creation_form').submit(function(e){ 

    $(".cs_f").each(function(index, obj){ 
    var cs_f_val = $(obj).val(); 
    if(cs_f_val == ''){ 
     $(obj).attr('style', 'background:red;'); 
     valid = false; 
    } 
    }); 

    //...repeat the snipet for each 3 remaining price groups 

    return valid; 
}); 
}); 
관련 문제