Javascript jQuery—使用同时填充的另一个输入字段的值来更改输入字段的名称
我正在开发一个动态表单,您可以在其中添加或删除字段, 您找到的第一个按钮是Javascript jQuery—使用同时填充的另一个输入字段的值来更改输入字段的名称,javascript,jquery,html,Javascript,Jquery,Html,我正在开发一个动态表单,您可以在其中添加或删除字段, 您找到的第一个按钮是addmetric。代码由此生成: 输入字段度量 按钮添加标签 在该字段中,用户可以使用按钮添加标记添加标记,该按钮是在单击添加度量时生成的。单击添加标签按钮时,将生成两个字段: 输入字段Id 输入字段值 为了序列化整个表单(这不是问题点),我需要生成的Html代码的结果如下: <input type="text" name="metrics[0][name]" value="Text 0"> // M
addmetric
。代码由此生成:
- 输入字段<代码>度量
- 按钮
添加标签
添加标记
添加标记,该按钮是在单击添加度量时生成的。单击添加标签按钮时,将生成两个字段:
- 输入字段
Id
- 输入字段
值
<input type="text" name="metrics[0][name]" value="Text 0"> // Metric
<input type="text" id="TagId0" name=" "> //Tag Id
<input type="text" id="TagValue" name="metrics[0][tags][][0]">
如果可能的话,怎么做?
谢谢您可以编写字段的id,比如TagId-0和一些常见的类,比如tagfield,这样您就可以拆分值以获得索引,然后使用类访问它
$(".tagfield").keypress(function() {
var id=parseInt($(this).attr("id").split("-"));
$(this).siblings().attr("name","metrics["+id+"][tags]["+$(this).val()+"][0]");
});
您可以使用
change
方法检测字段值中的更改。然后使用attr
方法更改名称。希望我理解正确。这是修改后的
更改字段值后不要忘记按enter键:)
编辑:我还向要附加的字段添加了两个类
.inputID
和.inputVal
。我希望这有帮助 我不确定我是否正确理解了这个问题。您希望在字段中键入文本时,它会提取该值并将其添加到name属性中,在该属性中输入单词hello?如果我误解了,很抱歉。不客气。对不起,我的解释可能会让人困惑。在我将值(即“hello”)放入带有id=“TagId0”
的输入字段时,必须将该值传递给上一个输入字段的名称。希望我是清楚的:)在小提琴中,输入值与id=TagValue
有一个name=“metrics[0][tags][[0]”
但是当我用一个值填充上一个输入字段时,如果我使用Chrome inspect元素查看,这个名称不会改变。例如,我将“ch”
放在带有id=“TagId0”
的输入字段上,但在最后一个输入的名称上我看不到“ch”
,但我现在理解了,我更改了错误的输入。现在就开始,谢谢,但有个问题。很抱歉,我的问题不具体。我只需要改变这个领域。相反,在函数中,当我填充第一个输入字段时,它也会发生变化。例如:
,我不希望这种情况发生。我认为修改函数第一行的值已经足够了,不是吗?我修改了它,并更新了JSFIDLE。看看这对你是否有效。现在有效了,但对我来说还不够,抱歉。问题是,如果我单击“添加标签”添加其他两个字段(id和值),函数也将采用新的id值,而我希望每次添加新id时,该值将采用其相对id。
$(".tagfield").keypress(function() {
var id=parseInt($(this).attr("id").split("-"));
$(this).siblings().attr("name","metrics["+id+"][tags]["+$(this).val()+"][0]");
});
$(document).on('change', '#InputsWrapper .inputID', function(){
thisVal = $(this).val();
thisName = $(this).siblings('.inputVal').attr('name');
newName = thisName.replace('[tags][', '[tags][' + thisVal);
$(this).siblings('.inputVal').attr('name', newName);
});