2011-08-24 2 views
1

해당 텍스트 상자 및 확인란의 목록이 있습니다. 사용자가 체크 박스를 체크 한 텍스트 상자 만 보이게하고 싶습니다. 어떻게해야합니까?해당 확인란을 선택하면 텍스트 상자가 표시되어야합니다.

<input type="text" name="album_text[]" id="album_text" class="album_text" /> 
<input type="text" name="album_text[]" id="album_text" class="album_text" /> 
<input type="text" name="album_text[]" id="album_text" class="album_text" /> 

<input name="album_checkbox[]" type="checkbox" id="album_checkbox" value="' . $res. '"> 
<input name="album_checkbox[]" type="checkbox" id="album_checkbox" value="' . $res. '"> 
<input name="album_checkbox[]" type="checkbox" id="album_checkbox" value="' . $res. '"> 

은 지금 업데이트 버튼 클릭에 모든 텍스트 상자에 관계없이 체크 박스의 가시가 :

$("#album_edit").click(function() { 


        $(".album_text").show(); 



     }); 

편집 : texboxes와 체크 박스가 런타임에 동적으로 생성된다.

+0

첫 번째 문제는 여러 개체에 동일한 ID를 사용하고 있다는 것입니다. 어느 것이 고유해야합니까! 원하는 경우 .eq() 속성을 사용할 수 있으므로 input.eq (0) 텍스트를 클릭하면 checkbox input.eq (0)가 표시됩니다. – Tumharyyaaden

+0

그들이 제공하는 예도 아래에서 제공됩니다. 하지만 ur que를 다시 읽으면 텍스트 입력란과 체크 상자를 바꿨을 지 모르지만 클래스를 변경하면 다른 방향으로 작업해야합니다! – Tumharyyaaden

답변

1

여기서 일하고 예 http://jsfiddle.net/JmqLH/

HTML :

<span class='textinput'> 
    <input type="text" name="album_text[]" id="album_text1" class="album_text" /> 
    <input type="text" name="album_text[]" id="album_text2" class="album_text" /> 
    <input type="text" name="album_text[]" id="album_tex3t" class="album_text" /> 
</span> <br> 
<span class='chkbx'> 
    <input name="album_checkbox[]" type="checkbox" id="album_checkbox1" value="' . $res. '"> 
    <input name="album_checkbox[]" type="checkbox" id="album_checkbox2" value="' . $res. '"> 
    <input name="album_checkbox[]" type="checkbox" id="album_checkbox3" value="' . $res. '"> 
</span> 

JS :

$('span.chkbx input').hide(); 

$('.album_text').click(function(){ 
    var indexme = $(this).prevAll().length; 
    $('.chkbx input').eq(indexme).show(); 
}); 

업데이트 1 : http://jsfiddle.net/JmqLH/1/

업데이트 2 : http://jsfiddle.net/JmqLH/2/는 JS에서 두 입력 유형 스왑 ...

업데이트 3 : http://jsfiddle.net/JmqLH/3/ HTML의 두 입력 그룹을 바꿨습니다 ...

+0

텍스트 상자와 checbox는 런타임에 생성됩니다. – input

+0

업데이트 된 jsfiddle을 확인하십시오. http://jsfiddle.net/JmqLH/1/ – Tumharyyaaden

+0

@tunharyyaaden, 이상적으로는 작동해야하지만 어떻게 든 작동하지 않아야합니다. 사용자가 업데이트하고자하는 데이터의 체크 박스를 체크하고 EDIT 버튼을 클릭하면 텍스트 상자를 보여주고 싶습니다. – input

0

우선, 여러 요소에 동일한 id을 사용하지 않아야합니다. 대신 class 선택기를 사용할 수 있습니다. 그런 다음 album_text_1album_checkbox_1과 같은 해당 id을 할당하면 다음 단계에서 오류가 발생하기 어려워집니다.

var checkboxes = $('.album_checkbox'), 
    textFields = $('.album_text'); 

checkboxes.change(function() { 
    // Eg. replace album_checkbox_1 with album_text_1 
    var textField = $('#' + this.id.replace(/^_checkbox_/, '_text_')); 
    if(this.checked) { 
     textField.show(); 
    } else { 
     textField.hide(); 
    } 
}); 

당신이 독특한 id의를 사용할 수 없습니다 (마크 업을 제어 할 수 없습니다) 경우 대신 .index().eq()를 사용할 수있는 체크 박스가 checked 경우

둘째, 당신은 확인해야합니다 각 요소 집합의 순서가 일치하는지 확신 할 수 있어야합니다. 그래서 비슷한 위의 코드 만 맞춰 6 대체 될 것이다 : 당신은 $이 (때

var textField = textFields.eq(checkboxes.index(this)); 
+0

texbox 및 checkbox는 런타임에 동적으로 생성되므로 고유 한 ID를 부여 할 수 없습니다. 나는'eq'와'index'를 사용해 보았고'id'를'class'로 바꿨지 만 아무 일도 일어나지 않았습니다. 텍스트 상자가 나타나지 않습니다. – input

+0

텍스트 상자와 체크 박스에 대한 foreach 루프에 동적으로 자동 증가를 추가하고 처음에 게시 한 것과 같이 행 6을 변경했지만 아무 일도 발생하지 않습니다. 어떤 오류도 발생시키지 않습니다. – input

0

예, 그들은, 그들 모두 있기 때문에 동일한 ID와 class..so있을 것이다 ". album_text"), 모든 텍스트 상자가 전달되어 표시됩니다. 텍스트 상자를 체크 상자에 고유하게 묶거나 식별하는 메커니즘을 찾아 jquery 코드에서 해당 고유 ID/클래스를 사용하여 텍스트 상자를 표시해야합니다.

관련 문제