需要使用 jquery 对具有部分文本字段名称的值进行匹配并返回结果
Posted
技术标签:
【中文标题】需要使用 jquery 对具有部分文本字段名称的值进行匹配并返回结果【英文标题】:Need to do a match on a value with partial name of textfield with jquery and return results 【发布时间】:2017-11-07 19:23:41 【问题描述】:我目前设置了一个表单,用户在其中输入数字,并根据输入的数字,通过 jquery 显示一系列文本框。
文本框显示代码如下:
for(i=0;i<count;i++)
ch.innerhtml = ch.innerHTML +"<div style='width:120px;float:left;'>Left
Slide (size 6):</div><div style='float:left;width:100px;'> <input
type='text' class='txt' style='width:80px;margin-right:10px;font-size:14px !
important;' name='six"+ i+"'></div>";
(有几个,从本示例尺寸 6 到尺寸 10。)
jquery 基本上会遍历并选择所有输入文本框的值,将它们连接起来并将它们添加到表单上的隐藏字段中,然后将其提交到后端。
(我只有一个字段可以使用,并且需要通过一个字段传递大量信息。)
这部分的代码如下:
$(function()
$("#shineon").click(function(event)
var data = [];
var form = $("form :input[type=text]");
$.each(form, function(e, textBox)
if (e > 0)
data.push($.trim(textBox.value));
);
$("#mybond").val(data.join(" "));
);
);
这返回的几乎正是我所需要的,所有动态生成的文本框的值。
它返回输入如下:
textone texttwo textthree textfour
但是,我确实需要以更具体的方式加入它们 - 这样我才能捕获所有值,然后基于部分名称匹配(“六”),其中我的文本字段被命名为:six1 Six2 Six3 等等上...
所以我的输入返回看起来像这样:
six1 - textone texttwo
six2 - textone texttwo
six3 - textone texttwo
有没有办法在不破坏我已经编写的代码的情况下轻松完成这项工作,并且效果很好?
【问题讨论】:
【参考方案1】:从元素中获取name
属性并将其与值连接起来:
data.push($.trim(textBox.getAttribute('name') + textBox.value));
【讨论】:
这可行,但我不知道确切的名称,我只会知道部分名称 - 因为它取决于用户输入,这是未知的 - 所以我可能需要得到:six1 Six2 Six3 或者我可能需要得到 Six1, Six2, Six3, Six4, Six5, Six6, Six7 - @ForeverDita 你想获取input
的name
及其对应的value
吗?
是的,我想通过部分名称匹配的输入循环,因为我不知道是否有 2 或 10 或 15 - 然后我想获得值,但我可以转储到隐藏字段中-我现在正在使用上面的代码执行此操作,但是结果以空格分隔的形式返回-我想做的是使每个结果都以部分名称匹配( ie Six1, Six2, Six3) 回到一行,然后下一行将根据部分名称 7(即 Seven1, Seven2, Seven3, Seven4 等)给出匹配 - 这有意义吗?
好的,如果你想每次都创建一个新行,只需添加新行字符\n
。像这样写代码:textBox.getAttribute('name') + textBox.value + '\n'
我实际上是通过使用 data.push(this.name);但我接受了你的回答,因为你让我走上了正确的道路,如果没有你的回答,我不会明白这一点。非常感谢!以上是关于需要使用 jquery 对具有部分文本字段名称的值进行匹配并返回结果的主要内容,如果未能解决你的问题,请参考以下文章
使用jquery禁用具有名称属性的textarea字段[重复]
如果超出范围,防止 jQuery UI datepicker 更改文本字段的值