2014-09-18 72 views
0

單擊表格行時,行文本將複製到上面的輸入以進行編輯。文本複製得很好,但我無法得到所有的選擇權。我的文本與值不同(對於每個選擇,它都是第三列),所以我不能使用select的.val()。通過文本屬性選擇的選項不是值嗎?

我需要屬性/道具選擇文本匹配文本的開始和是否可報銷(第三列)。想法? 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 2014-09-18 19:27:12

+0

例子?小提琴安裝完畢。 – triplethreat77 2014-09-18 19:29:03

+0

可以更改選擇的文本值還是動態生成這些值? – asdf 2014-09-18 19:47:54

回答

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 2014-09-18 19:52:25

+0

答覆已更新。 – 2014-09-18 19:56:56

+0

差不多。我不希望選擇改變,只匹配第一個詞並選擇該選項。 – triplethreat77 2014-09-18 20:02:19

0

剛剛更新選擇值的值,以反映從點擊(即circircle進來的文字,sqsquare和它完美的作品。

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

什麼你的代碼試圖做的是選擇一個值爲circle的輸入,但circle字段的值爲cir,所以它沒有被選中pro佩爾利。

+1

但問題指出「我的文本與值不同」,所以只是修改該值可能不是一個好答案。 – 2014-09-18 19:44:05

+0

@Kristoffer真的,我的硬編碼值將是最快的解決方案,但如果它是動態的(或從其他網站獲取等),並且需要匹配,那麼您的答案效果最好。我想對手頭的問題有更好的理解是必要的。 – asdf 2014-09-18 19:47:22