【问题标题】:Populate sibling cells on keyup event在 keyup 事件上填充同级单元格
【发布时间】:2018-01-12 01:55:10
【问题描述】:

这是我要讨论的Fiddle

我有三个输入框,我想制作它们,以便当用户输入其中任何一个时,其他输入框将填充一些文本。应设置为,如果用户在第一个单元格中输入,则填充右侧的两个单元格,或者如果用户在行中的最后一个单元格中输入,则填充前两个单元格。

到目前为止,我的代码在 Fiddle 中。我已经尝试.next() 大约一百万次,但我无法让它工作。

HTML:

<table>
    <tr>
        <td><input type="text" /></td>
        <td><input type="text" /></td>
        <td><input type="text" /></td>
    </tr>
</table>​

JS:

$('input').focus(function() {
    $(this).keyup(function() {
        var tmp = $(this).val();
        $(this).next('input').val("asdf");
    });
});​

【问题讨论】:

  • 试试knockoutjs.com,具体见ko.observables()s。此外,字面上没有理由不在您的问题中发布该标记/代码。
  • 喜欢这个? jsfiddle.net/j08691/mbctM/2
  • 请记住,当您要遍历某个范围内的选择器时,您需要小心选择器,而不是使用全局选择器。例如:jsfiddle.net/userdude/mbctM/6 adeneo's 可能更干净,但这给了你这个想法。
  • 它有效,但如果我有另一行(我有),那么这些也会更新。我只想更新当前行。
  • 我想我不确定你的意思是什么? jsfiddle.net/userdude/mbctM/10

标签: jquery html-table cell


【解决方案1】:
$('input').on('keyup', function() {
    $(this).closest('td').siblings('td').find('input').val(this.value);
});

FIDDLE

编辑:

排除第一个:

$('input:gt(0)').on('keyup', function() {
    $(this).closest('td').siblings('td').not(':first').find('input').val(this.value);
});

FIDDLE

【讨论】:

  • 这是完美的。我刚刚意识到我实际上有四列,我不想更新第一列。我怎样才能做到这一点?
  • @JaredFarrish - 哎呀,错字!只是用它来记录一些东西到控制台!
  • @Jon - 我猜这是一种愚蠢的遍历,但:first 是您可以使用的伪选择器:jsfiddle.net/userdude/mbctM/8
  • 这是实际代码。我只是试图为这篇文章简化它。 jsfiddle.net/hcbzQ 这个想法是,它将像一个 Excel 电子表格一样工作,用户可以在任何字段中输入费用,而周围的费用(每两周/每月/每年)将根据他们正在输入的内容进行计算因此,每两周一次的将始终是年度单元格除以 26。他们应该能够输入任何单元格(每两周一次、每月一次、每年一次),但其他人会更新。他们可以编辑第一列,但它们只是标题,因此根本不应该更新。
  • 不,我认为你最好自己搞清楚,但这对我来说有点太多了,有所有元素和不同的脚本、动态元素等。但我会疯狂猜测并说您将不得不委托很多这些处理程序,因为某些元素是动态插入的。
猜你喜欢
  • 2018-08-31
  • 2015-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多