HTML输入标签是否需要ID或名称?

时间:2016-01-18 20:17:25

标签: javascript html riot.js

我有一个包含循环的防暴标签,如下所示。这个循环在另一个暴乱循环中(可能很重要吗?)。升级到riot版本2.3.0后,页面变得缓慢且无响应。发布说明说暴乱循环速度较慢但更可靠。

我发现当我从输入标签中删除id时,页面再次响应。在输入上没有id我认为我会重新编写onclick方法以识别以其他方式单击的节点。

这似乎不起作用,因为看起来我的onclick方法没有被注册。所以我的问题是:输入没有id或名称是非法的吗?或者我可能做错了什么?

<div class="card-action">
   <div each={field in obj.fields} class="col s6" no-reorder>
       <a>{ field.label }</a>
       <form action='#'>
        <input type="radio" id="always-{field.id}" checked={ parent.currentDisplayAlways[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
        <label>Always</label>

        <input type="radio" id="conditional-{field.id}" checked={ parent.currentDisplayConditional[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
        <label>Conditional</label>

        <input type="radio" id="never-{field.id}" checked={ parent.currentDisplayNever[field.name] } onclick={ parent.onInterestingFieldCheckboxClicked }>
        <label>Never</label>
        </form>
     </div>
 </div>

2 个答案:

答案 0 :(得分:0)

我认为您可以绑定方法并在方法中添加您的ID或对象。如果要查找单击的项目,可以使用事件。

答案 1 :(得分:0)

拥有不含inputid属性的HTML name 绝对合法。要确定在Javascript中没有id的情况下单击了哪个节点,您可以传递要调用this关键字的函数,该关键字几乎就是该元素的整个DOM对象。按document.getElementById()。所以,函数看起来像这样:

function firedAfterClicked(el) {
   alert(el.checked); //Whatever you want it to do
}

输入看起来像这样:

<input type="radio" checked={ parent.currentDisplayNever[field.name] } onclick="firedAfterClick(this)">

该代码在单击时调用firedAfterClick函数,并将输入作为DOM元素传递给this关键字。

但是,我觉得真正的问题与你的Riot代码有关。取出id属性似乎更像是一种临时解决方法而不是真正的解决方案。