Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery表-引用用户输入的行名称和值_Jquery_Reference_Html Table - Fatal编程技术网

jQuery表-引用用户输入的行名称和值

jQuery表-引用用户输入的行名称和值,jquery,reference,html-table,Jquery,Reference,Html Table,我有几个由另一个应用程序生成的表,我无法控制这些表。我对jQuery和ajax完全陌生,对jsp的了解也很有限。两个示例行是: <table class="sicknessForm"> <tr id="row_0" class="datarow"> <td id="col_2"><input name="row_0-col_2" class="tabcell" value="Injuries"></td

我有几个由另一个应用程序生成的表,我无法控制这些表。我对jQuery和ajax完全陌生,对jsp的了解也很有限。两个示例行是:

<table class="sicknessForm">                  
<tr id="row_0" class="datarow">
 <td id="col_2"><input name="row_0-col_2"  class="tabcell" value="Injuries"></td>
 <td id="col_4"><input name="row_0-col_4"  class="tabcell" value="01"></td>
 <td id="col_5"><input name="row_0-col_5"  class="tabcell" value="2"></td>
 <td id="col_6"><input name="row_0-col_6"  class="tabcell" value="5"></td>
</tr>  

<tr id="row_1" class="datarow">
 <td id="col_2"><input name="row_1-col_2"  class="tabcell" value="Absences"></td>
 <td id="col_4"><input name="row_1-col_4"  class="tabcell" value="100"></td>
 <td id="col_5"><input name="row_1-col_5"  class="tabcell" value="102"></td>
 <td id="col_6"><input name="row_1-col_6"  class="tabcell" value="105"></td>
</tr>  
</table>
  • 我如何循环遍历每一行,从第一列(第二列)获取值,并将数据放入数组中发送到服务器
  • 如何引用每列的第一行以禁用用户输入

    $(:HowDoIReferenceThis).attr('disabled', '');
    
  • 我需要验证除了第一列之外,每个单元格都是数字。任何关于这个的指针(否则我可以在我的servlet中检查),特别是关于如何循环所有有效的输入单元格(除了“伤害”、“教唆”和…单元格之外的所有内容)

  • 此时,结果对象将包含指向每个数据点的属性

    关于问题3:

    您可以在这里验证它,也可以在将其推送到这些数组之前在每个数组的内部进行验证。就验证数字而言,一种简单的方法可能是:

    if (/^\d+$/.test($(this).val())){
        //data is good
    }
    

    这里有一个我用来摆弄你东西的JSFIDLE:

    更新了

    演示:

    一切就绪

    $(function() {
        var row = [];
        $('.datarow').each(function(i) {
            row.push($('td input:eq(0)', this).val() + ' -> ');
            $('td input:gt(0)', this).each(function(e) {
                if (isNaN(this.value)) {
                    $(this).attr('disabled', true);
                } else {
                    row.push(this.value);
                }
            });
        });
        var send_to_ajax = row.join(' ');
    });
    
    更新2

    回应评论

      $('.tabcell').change(function() {
        if (isNaN(this.value)) { 
        $(this).css('background','red');
        } else {
        $(this).css('background','green');
        }
      });
    

    您根本无法控制标记?我这样问是因为该应用程序正在生成带有重复ID的无效HTML。这加上不必要地使用输入字段作为列标题。生成表格单元格的应用程序只是在行和列数据上迭代以生成表格。无法设置某些单元格为输入,而某些单元格为非输入。太棒了,Ryley。谢谢你的快速回复。我以前从未听说过JSFIDLE,那真的很酷!如果可以的话,请至少保留一段时间。我不知道它在这方面是如何工作的-希望它不会被无限期删除!因此,该函数循环遍历每个“datarow”类,将列0文本放入行数组中,然后对大于0的每个单元格进行检查,看它是否不是一个数字。如果不是数字,则禁用元素,否则会将其添加到行数组的末尾。
    当输入非数字字符时,是否有方法更改或删除元素的颜色$(这个);或$(this.css({background:'red'});然而,当我尝试这些时,当我输入一个非数值时,什么也不会发生。我可以向每个表元素或行添加一个on change事件吗?再次感谢维克·汉克斯,阿塞蒂克!我只是在看.change事件函数。我本来打算将其附加到row类,但您的方法有效。我认为将事件附加到输入元素而不是行元素可能更好。维克
    $(function() {
        var row = [];
        $('.datarow').each(function(i) {
            row.push($('td input:eq(0)', this).val() + ' -> ');
            $('td input:gt(0)', this).each(function(e) {
                if (isNaN(this.value)) {
                    $(this).attr('disabled', true);
                } else {
                    row.push(this.value);
                }
            });
        });
        var send_to_ajax = row.join(' ');
    });
    
      $('.tabcell').change(function() {
        if (isNaN(this.value)) { 
        $(this).css('background','red');
        } else {
        $(this).css('background','green');
        }
      });