Получение значения выделенных ячеек в jQuery - PullRequest
1 голос
/ 24 мая 2011

Я использую скрипт freebie, чтобы выделить ячейку таблицы при нажатии. На него можно нажать несколько раз, чтобы я мог выбрать несколько ячеек за один раз. Когда я щелкаю по ячейкам, я хочу получить их значения и отобразить их на входе ниже, чтобы я мог ПОСТАВИТЬ его, когда закончу выделять. Мой скрипт выглядит так:

function displayVals(item) {
        var multipleValues = $(this).html() || [];
        $("p.info").html("<b>Multiple:</b> " + multipleValues.join(", "));
        alert($(item).html()); 
        $("#clicked").val(multipleValues.join(", "));
    }

    $(document).ready(
        function(){
            $('#table3').highlight('td');
            $('#table3').highlight('td', 'highlight-selected', 'mousedown');
            $('#table3 td').click(function() { 
                displayVals(this);
            });

        }
    );

В этом примере в функции displayVals я использую alert, чтобы показать, какую ячейку я выбираю сейчас. Он показывает без проблем, но ничего не вставляется во ввод с именем clicked и ничего не появляется в p.info.

Если кто-нибудь может мне помочь с этим, я буду благодарен.

1 Ответ

0 голосов
/ 24 мая 2011

В событии щелчка this указывает только на элемент, на который нажали, а не на все tds.

$('#table3 td').click(function() { 
     displayVals(this);
});

.html() возвращает строку, поэтому вам не нужны объединения, и вы используете this вместо item:

function displayVals(item) {
    var multipleValues = $(item).html() || '';
    $("p.info").html("<b>Multiple:</b> " + multipleValues);
    alert($(item).html());
    $("#clicked").val(multipleValues);
} 

Список всех нескольких значений

function displayVals(item) {
  var multipleValues = [];
  $(item)
    // Search the parrent table
    .closest('table')
    // Get any highlight selected td
    .find('td.highlight-selected')
    // Iterate and add the html to multipleValues
    .each(function(){ multipleValues.push($(this).html()) })


    $("p.info").html("<b>Multiple:</b> " + multipleValues.join(", "));
    alert(multipleValues.join(", "));
    $("#clicked").val(multipleValues.join(", "));

} 
...