自动填充侦听器和 keyup 触发器上的 JQuery 语法错误,同时循环并查找顺序命名的输入

Posted

技术标签:

【中文标题】自动填充侦听器和 keyup 触发器上的 JQuery 语法错误,同时循环并查找顺序命名的输入【英文标题】:JQuery syntax bug on an auto-fill listener and keyup trigger while looping and looking for sequentially named inputs 【发布时间】:2013-06-01 05:54:49 【问题描述】:

所以,我正在使用(玩,因为我不是受雇的开发人员)网络表单上的许多不同输入。最终结果是它们将被发布并保存为 CSV 文件。

但我的直接问题是关于遍历名称并为相邻单元格激活自动填充的语法

这是一个有效的单个事件的示例代码:

$(".className").keyup(function()
    var dataPoint = $(this).val();
    if(!$('[name="this_row_1"]') =='')
        $('[name="that_row_1"]').val(dataPoint);
    
);

所以,当".className"的输入改变时,如果"this_row_1"不为空,那么"that_row_1"将被".className"的值填充。

该代码有效,但我有许多按顺序命名的行的输入; "this_row_1" - "this_row_150"

'[name=" 类型结构中合并循环的正确语法是什么?

我已经尝试过这种变体但没有成功:

$(".className").keyup(function()
    var dataPoint = $(this).val();
    for(var i = 1; i < 151; i++)
    if(!$('[name="this_row_"[i]]') =='')
        $('[name="that_row_"[i]]').val(dataPoint);
    
);

我不确定您是否可以循环访问'[name="。如果可以的话,我在放置循环变量时肯定会遇到问题。

提前致谢

更新:

这是一个简短的示例 html 表单代码,它更好地说明了这个想法:

<input class="className" />
<table>
    <tr>
        <td><input name="this_row_1" /><input name="that_row_1" /></td>
    </tr>
    <tr>
        <td><input name="this_row_2" /><input name="that_row_2" /></td>
    </tr>
    <tr>
        <td><input name="this_row_3" /><input name="that_row_3" /></td>
    </tr>
    <!-- ( . . . ) -->
    <tr>
        <td><input name="this_row_150" /><input name="that_row_150" /></td>
    </tr>
</table>

【问题讨论】:

【参考方案1】:

试试这个:

$(".className").keyup(function() 
    var dataPoint = $(this).val();
    for (var i = 1; i < 151; i++) 
      if ($('[name="this_row_' + i + '"]').val() != '') 
        $('[name="this_row_' + i + '"]').val(dataPoint);
      
    
);

有几个问题:

    用你的字符串连接'[name="this_row_' + i + '"]' 您的if 语句相等性检查!= 检查.val()$('[name="this_row_' + i + '"]')

更多信息请参见javascript String documentation。

【讨论】:

谢谢,这可以填充所有“那个”行,如果“这个”行之一被填充的话。但我希望不要覆盖所有的“那个”行,而只是填充与填充的“这个”输入相邻的“那个”输入。 IE。那些在同一行中彼此相邻的“这个”和“那个” @Killuh-B 你能发布html标签的结构吗? @Killuh-B 例如.className[name="this_row_N"] 的关系在哪里? 我已经用表单的基本结构更新了我的问题,减去了一些绒毛 @Killuh-B - 这不是目前正在做你正在寻找的东西吗?如果未填写相应的this_row_N,则that_row_N 表单的每一行都将填充.className 的值。这不是你想要做的吗? 编辑:在您的if 语句中发现了一个错误。 ! 应该在 != 旁边。请参阅我修改后的答案。您还想检查this_row_N.val()

以上是关于自动填充侦听器和 keyup 触发器上的 JQuery 语法错误,同时循环并查找顺序命名的输入的主要内容,如果未能解决你的问题,请参考以下文章

Javascript,input文本框内容改变时自动触发事件,不是keyup或者onchange,需要可以解决中文输入的问题

Google 地图自动填充的“place_changed”以外的事件

JQuery——键盘事件.keydown().keyup()和.keypress()

自动填充上的 jQuery 函数(chrome)

keyup 无法在 Android 上的 Chrome 上运行

从自动填充列表中选择值时运行 ajax 侦听器操作