2014-09-18 4 views
0

테이블 행을 클릭하면 행 텍스트가 편집을 위해 위의 입력 내용을 복사합니다. 텍스트는 정상적으로 복사되지만 모든 선택권을 얻을 수는 없습니다. 내 텍스트가 값과 동일하지 않습니다 (모든 선택 항목에 대해 세 번째 열에 해당). 따라서 선택 항목의 .val()을 사용할 수 없습니다.속성이 텍스트가 아닌 값으로 선택 되었습니까?

텍스트를 텍스트의 시작과 일치시키고 상환 가능 여부 (세 번째 열)를 지정하려면 attribute/prop를 선택해야합니다. 아이디어? jsfiddle.net/7vLdxddr/14

$('.table').on('click', 'tr', function() { 

       if ($(this).hasClass('selected')) { 
        $(this).removeClass('selected'); 
       } 
       else { 
        $('tr.selected').removeClass('selected'); 
        $(this).addClass('selected'); 
       } 

       for (var i = 0; i < $(this).find("td").length; i++) { 
        // fill input values 
        $(this).closest("table").find("th").eq(i).find("input:text").val($(this).find("td").eq(i).text()); 
        // fill selects 
        $(this).closest("table").find("th").eq(i).find("select").val($(this).find("td").eq(i).text()); 
       } 
      }); 
+0

옵션을 통해 반복하고, 텍스트를 검사하고, 일치하는 경우 선택한 속성을 설정하십시오. – epascarello

+0

예? 바이올린이 설치되었습니다. – triplethreat77

+0

선택 항목의 텍스트 값을 변경하거나이 값을 동적으로 생성 할 수 있습니까? – asdf

답변

1

이렇게하면 텍스트와 동일한 값을 가질 필요가 없습니다.

$('table').on('click', 'tr', function() { 
     if ($(this).hasClass('selected')) { 
      $(this).removeClass('selected'); 
     } 
     else { 
      $('tr.selected').removeClass('selected'); 
      $(this).addClass('selected'); 
     } 

    // fill inputs 
    $(this).closest("table").find("th").eq(0).find("input:text").val($(this).find("td").eq(0).text()); 

    // fill selects  
    var text = $(this).find("td").eq(1).text(); 
    var text3 = $(this).find("td").eq(2).text(); 

    $(this).closest("table").find("th").eq(1).find("select option").filter(function() { 
    return $(this).text().indexOf(text) >= 0 && $(this).text().indexOf($(this).closest("table").find("th").eq(2).find('select option[value="' + text3 + '"]').text()) > 0; 
}).prop('selected', true);   

    $(this).closest("table").find("th").eq(2).find('select').val(text3); 

});

http://jsfiddle.net/7vLdxddr/15/

+0

indexOf()에서 어떻게 추가 할 수 있습니까? 내 tds 중 일부는 공백이나 대시를 사용합니다. http://jsfiddle.net/7vLdxddr/12/ – triplethreat77

+0

답변이 업데이트되었습니다. –

+0

거의. 선택 항목을 변경하지 않고 처음 단어와 일치시키고 해당 옵션을 선택하고 싶지 않습니다. – triplethreat77

0

그냥, squaresq을 즉 circircle로 클릭 (에서 들어오는 텍스트를 반영하기 위해 선택 값의 값을 업데이트하고 완벽하게 작동합니다.

http://jsfiddle.net/7vLdxddr/10/

무엇 귀하의 코드는 값이 circle 인 입력을 선택하려고했으나 circle 필드의 값은 cir 이었으므로 프로가 선택되지 않았습니다. perly.

+1

하지만 "내 텍스트가 값과 같지 않다"라는 질문은 값을 수정하는 것이 좋은 대답이 아닐 수도 있습니다. –

+0

@Kristoffer 아, 사실 하드 코딩 된 값에 대한 가장 빠른 솔루션이 될 것이지만 동적 인 경우 (또는 다른 웹 사이트에서 가져온 경우 등) 일치해야 할 경우 대답이 가장 잘 작동합니다. 손에있는 질문에 대한 더 나은 이해가 필요하다고 생각합니다. – asdf

관련 문제