【问题标题】:Get clicked Radio Button Values from all the row从所有行中获取单击的单选按钮值
【发布时间】:2020-03-15 00:57:10
【问题描述】:

我有一个包含很多行的网格 (dhtmlx)。我想要实现的是获取每行的单击单选按钮的所有值加上用逗号分隔的行 ID 并将其放入输入框中?行 ID 和单选按钮值由 :

分隔

row ids 自动生成这种格式 110014742~01~01

rowId:radioBtnValue, rowId:radioBtnValue, rowId:radioBtnValue

13004238~01~01:02, 110012178~01~01:05, 110014742~01~01:03 --> 单击单选按钮时在输入框内。

包含所有单选按钮及其标题的列的 id 为 rbBtn_sel

点击后会有另一个按钮从输入框中取值并保存。

function DoRowSaveConfig()  {
 var colIndex=mygrid.getColIndexById("rdBtn_sel");
 var radioBtn = mygrid.getCheckedRows(colIndex);
 var  CommaCount = radioBtn.split(",").length - 1 ;
 for (var i= 0; i<radioBtn.length; i++)
 if (radioBtn[i].checked) {
 var selectedVal = radioBtn[i].value;
             document.getElementById('an.ret.sys.4.').value = selectedVal;
             document.getElementById('an.ret.sys.5.').click();
             } 
             }
              return false;
       };

也许 Jquery 会有更好的解决方案。打开它。

http://jsfiddle.net/19eggs/ep6JE/

/**********编辑**************/

谢谢大家,它按预期工作,但我可能误导了你。单击单选按钮后,它需要获取行 id 而不是 id(second col) 的值。更新了图片。

Row ids 是自动生成的,格式为 110012178~01~01。此外,我们使用 xml 和 DHTMLX 网格会自动转换为表格。

<rows><row id="13004238~01~01"><cell>James Brown</cell>
<cell>12545</cell>
<cell><![CDATA[<div class="rd"><input type="radio" name="130042380101" value="00"></div>
<div class="rd"><input type="radio" name="1100121780101" value="01"></div>
<div class="rd"><input type="radio" name="130042380101" value="02"></div>
<div class="rd"><input type="radio" name="130042380101" value="03"></div>
<div class="rd"><input type="radio" name="130042380101" value="04"></div>
<div class="rd"><input type="radio" name="130042380101" value="05"></div>
<div class="rd"><input type="radio" name="130042380101" value="06"></div>]]>
</cell>
</row>\</rows>'; 

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    这是我的尝试 - 请注意它比地图简单得多,并假设您只有想要在页面上处理的收音机

    Live Demo

    $(function() {
      $("input[type=radio]").on("click",function() { 
        var clicked = [];
        $("input[type=radio]:checked").each(function() {
            clicked.push($(this).closest("td").prev().text()+"~"+this.value);
        });
        $("#an\\.ret\\.sys\\.4\\.").val(clicked);
      });    
    });
    

    如果您需要收音机的名称:

    clicked.push(this.name+":"+this.value);
    

    【讨论】:

    • 嗨! Mplungjan,谢谢你的回复。它有效,但我可能误导了你。请查看我的编辑。
    • 请查看更新。您的 html 或小提琴中没有任何内容可以显示 rowId 的位置,除了收音机名称。你能用实际的 RENDERED html 更新小提琴吗?看这里:dhtmlx.com/docs/products/dhtmlxGrid/index.shtml我看不到行 id 的设置位置
    • 你需要dhtmlx.com/docs/products/dhtmlxGrid/samples/…alert(mygrid.bB(mygrid.getRowIndex(mygrid.bI())))
    • 嗨!我已经解决了这个问题,但我似乎在第一次点击它时得到了一个空值。你能帮忙吗?
    • 嗨!我稍微更改了 html 代码,以便在所有单选按钮周围有一个带有 id 的 div,并改用该 id。再次感谢您的帮助。这是我最后所做的。 jsfiddle.net/19eggs/PYcH3/5
    【解决方案2】:

    使用.map()

    Fiddle Demo

    function DoRowSaveConfig() {
        var arr = $('table').find('input[type="radio"]:checked').map(function () {
            return $(this).closest('tr').find('td:eq(1)').text() + ':' + this.value;
        }).get().join();
        console.log(arr);
    };
    

    【讨论】:

    • 嗨! Tushar,谢谢您的回复。它有效,但我可能误导了你。请查看我的编辑。
    【解决方案3】:

    使用.map() 创建一个带有.join() 的数组允许您这样做:

    function DoRowSaveConfig(){
        var arr = $('tr:not(:first)').map(function(){
            var id = $.trim($(this).find('td').eq(1).text()); //1 == second column
            var value = $(this).find(':checked').val(); //Find the checked one
            return id + ':' + value; //Build an array of strings
        }).get()
        
        alert(arr.join(', ')); //Join them.
    }
    

    http://jsfiddle.net/ep6JE/1/


    编辑

    编辑后,此代码应该工作:

    function DoRowSaveConfig(){
        var arr = $('row').map(function(){
            var id = this.id;
            var value = $(this).find(':checked').val(); //Find the checked one
            return id + ':' + value; //Build an array of strings
        }).get()
        
        alert(arr.join(', ')); //Join them.
    }
    

    【讨论】:

    • 嗨!卡尔,谢谢你的回复。它有效,但我可能误导了你。请查看我的编辑。
    • @19eggs 查看我的编辑,我没有测试它,但我认为它会起作用。
    • @19eggs 你能做个小提琴吗,无法检测出什么问题:jsfiddle.net/ep6JE/2
    • 嗨!我已经更新了你的小提琴。我们使用 DHTMLX 并解析 xml,它创建一个网格(表格)并将值从 xml 放入 DHTMLX 提供了这个来获取行的 id 但没有运气...var selId = grid.getSelectedId( ); docs.dhtmlx.com/doku.php?id=dhtmlxgrid:rows_manipulation 非常感谢您尝试查看它。
    • 谢谢你,卡尔。我会尝试解决一些问题。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签