0

在这里提琴

这似乎有点复杂,所以我试图尽可能笼统。请查看小提琴以使其更有意义。

一般的想法是将文本输入的名称属性设置为前面选定选项的下拉列表值。它工作得很好。当您“添加过滤器”时,麻烦就开始了,它正在克隆文本输入并使用相同的名称属性值。我将数据作为 json 提交,文本输入的 name 属性正在设置“键/值”对的“键”。这导致提交两个具有相同“密钥”的参数。我似乎只能在更改事件上更新文本输入的名称属性。下一行是原因。

$('.js-selectblock > .js-select:first').clone().appendTo('.js-selectblock');

我试过一些东西,比如.clone(false).find('input[type="text"]).attr('name','FOO').appendTo('.js-selectblock')

但这只会克隆文本输入,我无法知道将名称值设置为什么。该代码正在禁用下拉列表中先前选择的值,这消除了多次选择相同值的可能性,我需要找出一种方法来动态设置文本输入的名称属性以匹配下拉列表中的选定值.

tl;dr - 需要一个更好的例程来根据选择列表选项的数量动态添加搜索过滤器。克隆文本输入的名称属性需要与其同级选择列表的选定值匹配。

4

1 回答 1

1

你必须这样做:

$('.js-selectblock > .js-select:first').clone().appendTo('.js-selectblock').find('input[type="text"]').attr('name','foo');

更新小提琴

使用前必须appendTo()先使用find()

find()仅返回作为文本框的选定元素,因此只会附加文本框。

于 2013-08-05T02:41:33.847 回答