首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何调用表单元格中嵌套的文本区域的属性?

问如何调用表单元格中嵌套的文本区域的属性?
EN

Stack Overflow用户
提问于 2019-04-26 17:33:52
回答 2查看 162关注 0票数 3

我有一个网站,在那里我可以上传Excel工作表,这将打印在网站上的一个表格。表格中的某些单元格包含可编辑的文本区域。在表格的末尾是一个按钮,它应该将所有内容保存在一个数组中。

该表有3列和多行。第2列和第3列的文本数据嵌套在表格单元格中。现在,我想将textarea值存储在JS中的一个数组中,调用当前textarea的Id。文本区域的ID是动态给定的,数组也应该动态填充。我想遍历所有表格单元格并保存当前表格单元格/文本区域的值。表格单元格是没有问题的。但是Textareas的东西不起作用。

首先,我遍历了每个表格行和单元格,并将文本放入数组中。它起作用了,但后来我注意到,当我编辑文本区域时,更新后的值不会被接受。首先,我使用了.text(),然后我尝试了.val(),但它不起作用。我认为问题是我在"td“上调用了.val(),它是"”

PHP:

代码语言:javascript
复制
echo '<td><textarea class="form-control" style="overflow:hidden; resize:none; min-height:62px;" onkeyup="auto_grow(this)" cols="10" id="ta'.$taID.'" type=text style="border:none">' . ( ! empty( $r[ 1 ] ) ? $r[ 1 ] : '&nbsp;') . '</textarea></td>';
$taID++;

JS:

代码语言:javascript
复制
var tableData = new Array(5);
$('#tblAusgabe tr').each(function(row, tr){
    for(var i=0;i<3;i++){
         var inputString = $(tr).find('td:eq('+i+')').text();
         if(i==0){
             tableData[arrIndex][mitarbeiterCount][i] = 
             inputString.substr(2,inputString.length-3);
         }
         else if(i==1){
             tableData[arrIndex][mitarbeiterCount][i] = inputString;
         }
         else{
             var taid=$(tr).find('td:eq('+i+')').attr('id'); // not working
             console.log("1."+$(tr).find('td:eq('+i+')').attr('id')); //test
             console.log("2."+taid);                                  //test
             tableData[arrIndex][mitarbeiterCount][i] = $(this).val();
         }

     }
}

我想要像这样的东西

代码语言:javascript
复制
var id = $(thisElement).attr('id');
array[index]= $(id).val();

但是我不知道怎么叫文本区域的ID。或者有没有更简单的方法呢?

希望你能理解这个问题,并能帮助我。对不起,我的英语不太好,我是德国人,这是我的第一个问题:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-26 20:48:25

用另一种方式解决了它。我用一个计数器来做这件事,每次有一个文本区域通过这个计数器时,它就会加1。

代码语言:javascript
复制
tableData[arrIndex][mitarbeiterCount][i]=document.getElementById("ta"+count).value;
count++;
票数 0
EN

Stack Overflow用户

发布于 2019-04-26 18:01:22

您可以使用map遍历每个tr。使用id作为属性名称和值,将所有textarea和reduce find到一个对象。

​

代码语言:javascript
复制
var result = $('#tblAusgabe tr').map(function(i, o) {
  return $(o).find('textarea').get().reduce(function(c, v) {
    c[v.id] = v.value;
    return c;
  }, {});
}).get();


console.log(result);
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table id="tblAusgabe">
  <tr>
    <td>1</td><td><textarea id="ta01a">apple</textarea></td><td><textarea id="ta01b">orange</textarea></td>
  </tr>
  <tr>
    <td>1</td><td><textarea id="ta02a">red</textarea></td><td><textarea id="ta02b">blue</textarea></td>
  </tr>
  <tr>
    <td>1</td><td><textarea id="ta03a">php</textarea></td><td><textarea id="ta03b">javascript</textarea></td>
  </tr>
</table>

​

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55864738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档