2016-11-13 8 views
0

사용자가 단추를 누르고 동적으로 3 개의 열이있는 테이블 행을 생성하는 양식이 있습니다. 생성 된 각 행은 테이블에 추가하고, 다음과 같은 형식으로 보유되어 생성 된 행의 각각의 요소가 생성 된 행에 대응하는 순차 첨가순차적 ID로 여러 항목을 선택했습니다. jquery에서 그 중 하나를 어떻게 참조 할 수 있습니까?

<tr id="1" class=""> 
    <td> 
    <select id="cmb_articulo_1" name="articulo[]"> 
    </td> 
    <td> 
    <input type="text" id="txtcantidad_1" name="txtcantidad[]"> 
    </td> 
    <td> 
    <input type="text" id="txtprecio_1" name="txtprecio[]"> 
    </td> 
    <td> 
    <select id="cmb_descuento_1" name="descuento[]"> 
    </td> 
</tr> 

을 (id="cmb_articulo_1", id="cmb_articulo_2", id="cmb_articulo_3",..)

사용자는 N- 발생했을 수 있습니다 어떤 옵션을 선택했는지 그리고 그 옵션을 처리하는 방법을 식별하는 방법을 결정할 수 없었습니다.

선택한 옵션을 처리하는 방법은 언제, 예를 들어, 내가 id = "combo"을 선택하면 선택한 옵션을 $("#combo").change(function{ . . . })으로 처리합니다. 그러나 상황이 올랐을 때 동적으로 생성 된 1, 2, 5, 10, 20 등의 행이있을 수 있으므로 이전 옵션과 같이 선택한 옵션을 처리 할 수 ​​없습니다. 선택한 행을 선택하여 선택한 옵션을 처리하여 해당 요소에 대한 동적 참조를 만드는 방법이 있어야한다는 것을 알고 있습니다.

제발,이 두 상담을 도와 주시겠습니까? 지금부터 고맙습니다.

답변

0

은 테이블의 모든 <select> 요소에 클래스를 추가

<select class="cmb_articulo" id="cmb_articulo_1" name="articulo[]"> 

그런 다음 바인드에 동적으로 삽입 된 요소 수 있도록 event delegation를 사용

:

$(document).on('change', '.cmb_articulo', function() { 
    var $select = $(this); 
    var $row = $select.closest('tr'); 
    var id = $row.attr('id'); 

    // You have the ID now, do whatever you need to. 
}); 
+0

는 당신에게 기여 대단히 감사합니다, 그것은 완벽하게 작동합니다. 내가 언급 한 것을 잊어 버린 것은 선택 옵션이 선택된 행의 나머지 요소를 참조하는 방법입니다. 설명 : 사용자가 쿼리에서 이미 언급 된 행 구조를 사용하여 4 개의 행을 생성하고 선택한 행에 따라 행 2의 첫 번째 선택 (항목)을 선택하면 같은 행의 입력 텍스트에서 데이터베이스에서 가져온 특정 데이터와 동일한 행의 두 번째 선택 항목 (후자)에는 데이터베이스에서 가져온 특정 옵션이로드되어야합니다. 도움을 주셔서 감사합니다. 감사. –

+1

@JuncoFuerte ''과 같이 주요 반복 컨테이너로 이동하면 find()를 사용하여 해당 컨테이너 인스턴스 내부의 내용을 찾습니다. ID보다는 공통 클래스를 사용하는 것이 더 간단 할 것입니다. http://stackoverflow.com/documentation/jquery/1321/events/14028/events-for-repeating-elements-without-using-ids#t=201611132250329596449 – charlietfl

+0

다음에 추가했습니다 : $ (document) .on (' (0) ") find ("td : eq (0) ") find ("td : eq (0) ") find ("td : eq (0) "). ("select"). val(); console.log (valor); }); 하지만 작동하지 않습니다. 콘솔에서 "undefined"가 표시됩니다. 따옴표 tr [id = idd]를 제거하면 콘솔에 "undefined"가 나타납니다. 코드에 tr [id = 4]를 넣은 다음 4 행을 선택하고 4 행을 선택하면 콘솔에 요소가 올바르게 선택 값으로 표시되므로 idd를 넣을 수있는 방법이 있다고 가정합니다. 변수를 받아들이려면 Different이어야합니다. –

관련 문제