Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery—使用同时填充的另一个输入字段的值来更改输入字段的名称_Javascript_Jquery_Html - Fatal编程技术网

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
  • 输入字段
为了序列化整个表单(这不是问题点),我需要生成的Html代码的结果如下:

<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);
});