2010-06-29 5 views
1

목표 : 텍스트 상자 집합의 현재 값을 읽습니다. 값이 "없음"이면 값을 제공된 값으로 바꿉니다. 값이 변경되면 중지합니다.jquery.val()을 사용하여 "정의되지 않은"이유가 무엇입니까?

텍스트 상자 및 .val() 대신 span 및 .text()를 사용하면 모든 것이 작동합니다. 그러나 텍스트 상자는 양식의 일부입니다.

"정의되지 않음"으로 반환되는 이유는 무엇입니까?

(기본적으로 내가 사용자의 입력에서 목록을 만들고 있어요)

HTML :

<input type="text" name="class1" value="None" ><br> 
<input type="text" name="class2" value="None" ><br> 
<input type="text" name="class3" value="None" ><br> 
<input type="text" name="class4" value="None" ><br> 
<input type="text" name="class5" value="None" ><br> 

JQuery와 :

function compareClass(a) 
    { 
     var input = a; 
     for(x=1;x<6;x++) 
     { 
     var classText = $('.class'+x).val(); 
     if(classText == "None") 
     { 
      $('.class'+x).val(input); 
      break; 
     } 
     }  
    } 

답변

9

당신은 클래스와 요소를 찾기 위해 jQuery를 말하고있다 class[x]이지만 이름은입니다.

<input type="text" id="class1" value="None" ><br> 
<input type="text" id="class2" value="None" ><br> 
<input type="text" id="class3" value="None" ><br> 
<input type="text" id="class4" value="None" ><br> 
<input type="text" id="class5" value="None" ><br> 

을하고 ID로 가져 오기 :

당신은 id들에 name 속성을 변경할 수있는 이름으로 지금

var classText = $('#class'+x).val(); // Note the #! 

(분명, "클래스"이해가되지 않습니다 아마)

또는 실제로는 class 속성을 사용할 수 있지만 CSS 클래스는 여러 요소에 할당 될 수 있으므로 rea가 아닙니다. 여기서 적합합니다.

+0

::: 마른 세수 ::: (필수 인용구). 롤. 감사. – dcp3450

+0

타입 변환을 위해 * String() *을 사용하십시오 : * var classText = $ ('# class'+ String (x)) .val(); * – sergzach

1

코드를 단순화하기 위해 jQuery의 선택기를 사용하십시오. [name^=Class]Class로 시작하는 name 속성을 가진 모든 입력을 의미한다 나 자신에 의해 끝에 시간 동안 코드를보고 무엇을 얻을 것을

function compareClass(a) 
{ 
    $('input [name^=Class]').each(function() { 

    if ($(this).val() === 'None') $(this).val(a); 

    }); 
} 
+1

$ ('input [name = "Class"]' 게다가 –

관련 문제