2014-09-18 51 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

相关问题