2

在我的网页上,我有一个表格,其中每一行都有一个单选按钮。单选按钮的名称对于所有行都相同,以便作为一个组访问它们。我有一个按钮,它会提醒选中其单选按钮的行号。我也想访问该行表的各个元素。任何关于我如何能够实现这一目标的想法都将非常受欢迎。

这是这个问题的小提琴:http: //jsfiddle.net/Gz668/13/

单击“edireq”按钮时,它当前会提醒选中其单选按钮的行号。我想访问表的其他字段(请求者、批准者、状态等)的值。这是 jquery 代码

$("#edireq")
    .button()
    .click(function () {
    var ele = document.getElementsByName('reqradio');
    var len = ele.length;
    var flag = -1;
    for (var j = 0; j < len; j++) {
        if (ele[j].checked) {
            flag = j;
        }
    }
    if (flag > -1) {
        alert("Row : " + (flag + 1));
    } else {
        alert("Select a row first");
    }
});

谢谢。

4

3 回答 3

1

你有一个奇怪的原生 javascript 和 jQuery 组合。您可以使用:checked选择器获取所选单选按钮,然后获取最接近的单选按钮tr并读取该行text中的每个单选按钮td。试试这个:

$(document).ready(function () {
    $('#reqtablenew tr').click(function () {
        $('#reqtablenew tr').removeClass("active");
        $(this).addClass("active").find('input[name="reqradio"]').prop('checked', true);
    });
    $("#edireq").button().click(function () {
        var $ele = $('input[name="reqradio"]:checked');

        if ($ele.length) {
            var $tds = $ele.closest('tr').find('td');
            var id = $tds.eq(1).text();
            var requestor = $tds.eq(2).text();
            // and so on..

            alert(id);            
            alert(requestor);
        }
        else {
            alert("Select a row first");
        }
    });

});

示例小提琴

于 2013-11-14T09:20:51.337 回答
0

试试这个:

var list = ["Req id","Requestor","Approver","Status","Product","Version","Source","Destination"]; //list of title
if (flag > -1) {            
    $(".active").find("td:gt(0)").each(function(i){                
        console.log(list[i]+": "+$(this).text());
    });
}

在这里拉小提琴。

于 2013-11-14T09:28:35.743 回答
0

我想出了以下内容:http: //jsfiddle.net/Gz668/16/

$(document).ready(function () {
$("table").on("click", "tr", function(){
    $(".active").removeClass("active");
    $(this).toggleClass("active");
    $(this).find("input[type='radio']").prop("checked", true);
});
$("#edireq").on("click", function(){
    activeRow=$(".active");
    cells=activeRow.children();
    if(cells.length >0){
    row={
        select:cells[0],
        requestId:cells[1],
        requestor:cells[2],
        approver:cells[3],
        status:cells[4],
        product:cells[5],
        version:cells[5],
        source:cells[6],
        destination:cells[7]
    };
        alert(row.requestor.textContent);
    }
})

});

于 2013-11-14T09:45:07.087 回答