Требуются ли для тегов ввода HTML идентификатор или имя?

У меня есть бунт тег, который содержит цикл, показанный ниже. Этот цикл находится внутри другого цикла бунта (может быть, важно?). После обновления до версии 2.3.0, страница становится медленной и не отвечает. В примечаниях к выпуску говорится, что петли бунта были медленнее, но надежнее.

Я обнаружил, что когда я удаляю идентификаторы из входных тегов, страница снова становится отзывчивой. Не имея идентификатора на входах, я подумал, что я переписал бы методы onclick, чтобы определить, какой узел был нажат другим способом.

Это не сработало, так как кажется, что мои методы onclick не зарегистрированы. Итак, мой вопрос: незаконно ли вводить данные без идентификатора или имени? или скорее всего я делаю что-то еще не так?

<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 ответа

Я думаю, что вы можете связать метод и добавить свой идентификатор или объект в методе. Вы можете использовать событие, если хотите найти нажатый элемент.

Это определенно законно иметь HTML input без id или же name приписывать. Чтобы определить, какой узел был нажат без id в Javascript, вы можете передать функцию, которую вы хотите вызвать 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 атрибуты кажутся мне скорее временным решением, чем реальным решением.

Другие вопросы по тегам