Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/88.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 Knockout.JS标签在foreach中不起作用_Javascript_Html_Knockout.js_Blade - Fatal编程技术网

Javascript Knockout.JS标签在foreach中不起作用

Javascript Knockout.JS标签在foreach中不起作用,javascript,html,knockout.js,blade,Javascript,Html,Knockout.js,Blade,我以前使用过HTML5标签“for”属性,它工作得很好,您可以单击它,它会将焦点更改为相关的表单项。但是,在这种情况下,每个项目的名称部分由其索引决定,标签似乎不会响应单击 HTML <div data-bind='foreach: people'> <div class="personWell"> <label data-bind="attr: {'for':'personsObserved['+ $index()+'][name]'}

我以前使用过HTML5标签“for”属性,它工作得很好,您可以单击它,它会将焦点更改为相关的表单项。但是,在这种情况下,每个项目的名称部分由其索引决定,标签似乎不会响应单击

HTML

<div data-bind='foreach: people'>
    <div class="personWell">  
        <label data-bind="attr: {'for':'personsObserved['+ $index()+'][name]'}" class="content-label">Name</label> 
        <input type="text" data-bind="attr: {'name':'personsObserved['+ $index()+'][name]'}, value: name" required placeholder="Person Name"></input>

        <label data-bind="attr: {'for':'personsObserved['+ $index()+'][company]'}" class="content-label">Company</label>
        <input type="text" data-bind="attr: {'name':'personsObserved['+ $index()+'][company]'}, value: company" required placeholder="Company Name"></input>

        <button type="button" class="btn btn-xs btn-warning" data-bind='visible: $root.people().length > 1, click: $root.removePerson'>Delete</button>
    </div> 
</div>

名称
单位
删除
输出源

<label data-bind="attr: {'for':'personsObserved['+ $index()+'][name]'}" class="content-label" for="personsObserved[0][name]">Name</label>

<input type="text" data-bind="attr: {'name':'personsObserved['+ $index()+'][name]'}, value: name" required="" placeholder="Person Name" name="personsObserved[0][name]">
名称

如您所见,“for”和“name”属性匹配。但是点击标签什么也做不了

for属性必须在HTML 5中指定ID。。。它完全不适用于name属性


您是否正在尝试解析“personsObserved[0][name]”?因为这只是你做的一个字符串,很确定它不会被执行。您也可以只执行'person'+$index()。此外,我一直认为这是使用'id'而不是'name'实现的。名称计算执行正确,如输出的源代码所示。我以前使用的所有标签都在其“for”中引用了name字段,但看起来它并没有执行它。如果“personsObserved”数组中的第一个“person”是,我希望看到它的名称。我不知道其他字段是如何工作的。我只见过用“id”完成的。你试过了吗?你完全正确。它以前似乎可以工作的原因是,我使用blade语法生成标签和输入,并自动插入ID。