У меня есть «создать» форму внутри bootstrap's modal
. Все мое Javascript
связано с тем, что form
использует id's
, а не classes
. Теперь то, что я хочу сделать, это создать второй form
, который использует тот же Javascript
(на основе идентификатора, как сказано ранее). Есть ли подходящий способ достичь этого? Я знаю, что очень плохая практика использования идентификаторов dublicate.Есть ли правильный способ повторного использования идентификаторов?
ответ
Не совсем, нет.
Когда вы используете идентификаторы, вы сообщаете браузеру, что идентификатор уникально доступен на странице.
Если у вас две формы с одинаковыми идентификаторами, это означает, что вы нарушили эту гарантию.
Примером тому, что это вызывает проблемы, является document.getElementById()
. Он захватит первый элемент, который он найдет. Если их два, он будет только первым.
Другая проблема: формы с идентификаторами имеют привычку быть сохраненными в Window, используя этот идентификатор (это поведение не является 100% стандартным для всех браузеров с более чем 2% использованием в глобальном масштабе, сегодня, но оно все еще довольно общий).
Гадкий решения, которые я видел в этом пространстве такие вещи, как «моя-ID-1» «моя-ID-2», и так далее, где вы затем получить доступ к ним, как: document.getElementById("my-id-" + x);
... на самом деле не совсем ...
... альтернативно, вы можете хранить формы в JS и просто прикрепить их к странице, когда вы хотите переключаться туда и обратно. Таким образом, они могут совместно использовать идентификаторы, если они не привязаны к странице одновременно.
document.querySelector("#my-form") === form1; // true
form1.parentNode.replaceChild(form2, form1);
document.querySelector("#my-form") === form2; // true
Опять же, это не поможет вам с помощью встроенного в форму и ввода разделяет пространства имен, в сколь-нибудь значимой, но если это функция, вы 100% игнорирование (не плохая вещь, чтобы сделать) , это решит эти проблемы.
В качестве альтернативы, вы можете просто перейти к классам и данных-атрибутов (или просто атрибуты), и жизнь станет еще проще ...
Хороший ответ! Спасибо, сэр! – Makis
Нет, нет надлежащего способа дублировать использование идентификаторов. Поведение браузера для этого - смешанная сумка, на которую нельзя положиться.
Используйте классы вместо или создайте динамические идентификаторы для каждой формы.
Если вы настаиваете на использовании двух форм на одной странице и обмениваетесь идентификаторами между ними, у вас есть несколько вариантов, чтобы заставить его работать и быть относительно «чистым». Не зная ваш стек технологий, я не могу дать полностью соответствующий ответ. Однако вы можете сделать что-то подобное ниже:
HTML
<div id="myFormDiv"></div>
JAVASCRIPT
$("#myFormDiv").load(urlToForm);
Вы, естественно, нужны ваши формы, чтобы быть в отдельных HTML-файлов для этого работы так как вы не можете надежно использовать идентификаторы для нескольких элементов в одном html-файле.
- 1. Правильный способ повторного использования ADODB.Command
- 2. Есть ли способ повторного использования XmlReader?
- 3. Есть ли способ повторного использования строки C#?
- 4. Есть ли СУХОЙ способ повторного использования шлюза?
- 5. Это правильный способ повторного использования клиента redis?
- 6. Правильный способ повторного использования UITableViewCell, содержащий UICollectionView
- 7. Есть ли «правильный» способ использования php?
- 8. Есть ли способ повторного использования построителя кода для дооснащения
- 9. Есть ли способ повторного использования сокетов в C++/Linux
- 10. Есть ли способ для повторного использования для импорта проектов Go?
- 11. Есть ли способ повторного использования подзапросов в том же запросе?
- 12. Есть ли способ повторного использования утверждений в XML-схеме?
- 13. Есть ли лучший способ повторного использования графиков Matplotlib?
- 14. Есть ли способ повторного использования уже закрытого экземпляра окна WPF
- 15. iPhone iOS Каков правильный способ создания статических идентификаторов повторного использования ячеек NSString?
- 16. NHibernate повторного использования идентификаторов при использовании session.SaveOrUpdate
- 17. Каков правильный способ хранения, увеличения и повторного использования индекса
- 18. Правильный способ повторного сохранения объекта?
- 19. Android - правильный способ хранения значения для повторного использования?
- 20. Правильный способ повторного использования и передачи нескольких запросов в yii2
- 21. Android: Правильный способ повторного использования активности моего приложения?
- 22. Небезопасный способ повторного повторного использования кода
- 23. SegmentedControl в TableViewCell - Правильный способ повторного использования клеток
- 24. Есть ли правильный способ бенчмаркинга?
- 25. Лучший способ повторного использования объектов
- 26. Есть ли правильный способ использования класса контекста db?
- 27. Есть ли правильный способ использования HtmlHelper в функции JavaScript?
- 28. Каков правильный способ использования PushSharp?
- 29. Лучший способ повторного использования Runnable
- 30. Есть ли способ создания пользовательских идентификаторов UIDataDetectorTypes?
Может быть в различных ''
Используйте класс, лучше в конечном итоге –
вместо использования Id рассмотреть использование селекторов типа .createform> .username и т. Д. Затем вы можете использовать классы для селекторов и стилей. –