使用Jquery获取表中可编辑td的值

时间:2016-02-23 10:54:53

标签: javascript jquery html html-table

我有一张动态表:

<table>
    <tbody>
        <tr>
            <td>1</td>
            <td contenteditable='true'>Value1</td>
        </tr>
        <tr>
            <td>2</td>
            <td contenteditable='true'>Value2</td>
        </tr>
    </tbody>
</table>

我想在用户完成(blur)

的写作时获取可编辑单元格的值
$('table td').focus(function () {
    console.log("focus ");
    console.log("echo each input "); // show every carac inputed

});
$('table td').blur(function () {
    console.log("blur ");
    console.log("echo the new value"); // show the new value

});

所以我的问题是如何在blur事件中获取新值,以及我如何准确地修改td。{/ p>

7 个答案:

答案 0 :(得分:3)

如果您想要显示每个字符,请使用 input 而不是 focus

您可以使用$(this).text()$(this).html()获取td中的值。

希望这有帮助。

&#13;
&#13;
$('table td').on('input', function () {
  console.log($(this).text());
});

$('table td').on('blur', function () {
  console.log("blur new value : "+$(this).text());
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>

  <tbody>
    <tr>
      <td>1</td>
      <td contenteditable='true'>Value1</td>
    </tr>
    <tr>
      <td>2</td>
      <td contenteditable='true'>Value2</td>
    </tr>

  </tbody>
</table>
&#13;
&#13;
&#13;

答案 1 :(得分:1)

  

所以我的问题是如何在模糊事件中获得新值

使用html方法。 (或text,如果您不想要标记。)它不是,它是新内容。 (td元素没有。)

  

以及我如何确切地获得哪个td被修改

this事件回调中的blur

所以:

$('table td').blur(function () {
    var newContent = $(this).html();
    // ...
});

附注:由于td元素在表格之外无效,因此$('table td')$('td')相同。

答案 2 :(得分:1)

使用text()功能,如下所示。

$('table td').blur(function () {
    console.log($(this).text());
});

答案 3 :(得分:1)

$('table td').focusout(function(){
    alert($(this).text());
});

当元素(或其中的任何元素)失去焦点时,会发生焦点事件。 focusout()方法附加一个函数,以便在元素上发生focusout事件或其中的任何元素时运行。

答案 4 :(得分:1)

您可以使用jQuery texthtml函数访问td内容(它没有!), 例如$(this).text()$(this).html()

&#13;
&#13;
$(function() {
  $('table td').focus(function() {
    console.log("focus ");
    console.log("echo each input "); // show every carac inputed

  });
  $('table td').blur(function() {
    console.log("blur ");
    console.log("echo the new value: " + $(this).text()); // show the new value

  });
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<table>

  <tbody>
    <tr>
      <td>1</td>
      <td contenteditable='true'>Value1</td>
    </tr>
    <tr>
      <td>2</td>
      <td contenteditable='true'>Value2</td>
    </tr>

  </tbody>
</table>
&#13;
&#13;
&#13;

答案 5 :(得分:1)

使用$(this).text();

$('table td').blur(function(){
    alert($(this).text());
});

答案 6 :(得分:0)

你应该使用 keyup 而不是焦点来获取每个字母,如果你使用 keypress 而不是 keyup 想得到合适的信件。

选中 fiddle

function runMe() {
  var startTime= (new Date()).getTime();

saveEmails();

  var startRow = ScriptProperties.getProperty("start_row");
  for(var ii = startRow; ii <= size; ii++) {
    var currTime = (new Date()).getTime();
    if(currTime - startTime >= MAX_RUNNING_TIME) {
      ScriptProperties.setProperty("start_row", ii)
      ScriptApp.newTrigger("runMe")
               .timeBased()
               .at(new Date(currTime+300000))
               .create();
      break;
    } else {
  saveEmails();
    }
  }

  //do some more work here

}
$(function(){
$('table td').keypress(function(e){
    var singleChar=String.fromCharCode(e.keyCode)
    console.log("focus ");
    console.log(singleChar); // show every carac inputed
});

$('table td').blur(function(){
    console.log("blur ");
    console.log($(this).text()); // show the new value
});
});