Сначала немного информации о том, зачем нужен ваш оригинальный обходной путь.
Большинство из этих модальных диалоговых плагинов, таких как Thickbox, извлекают ваш div, содержащий содержимое диалога, из исходного места в DOM, и снова прикрепляют его под тегом body
. Это в основном связано с тем, чтобы наложение позади всплывающего окна отображалось правильно.
Одним из побочных эффектов этого, особенно на странице ASP.NET, где все находится только в ОДНОМ теге формы, является то, что ваши элементы управления формой больше не находятся внутри тега <form>
. Поэтому, когда вы нажимаете кнопку для отправки формы, ничего не происходит (потому что она не находится внутри формы, которую она может отправить).
Обнаруженный выше обходной путь, который является самым простым решением, сначала закрывает Thickbox, так что содержимое вашей формы теперь возвращается в исходное положение в DOM внутри тега <form>
. Затем он инициирует отправку формы. Он использует тайм-аут, чтобы убедиться, что у диалогового окна была возможность правильно закрыться, прежде чем пытаться отправить.
Если вы хотите, чтобы диалоговое окно Thickbox оставалось открытым во время обратной передачи, вам нужно разобраться с реальной проблемой, описанной выше. Один из способов заключается в том, чтобы на самом деле не выполнять обратную передачу, а вместо этого использовать AJAX для вызова веб-службы / метода со значениями из полей формы. Другой вариант - изменить файл Thickbox.js, чтобы все внутри тега формы . Третий вариант - добавить еще одну страницу с вашей формой, а затем загрузить ее в Thickbox в iframe.
Каким бы ни было решение, оно будет либо содержать содержимое диалога внутри тега формы в DOM, либо использовать альтернативный способ публикации данных формы, чтобы не имело значения, находится ли он вне формы.
Надеюсь, это поможет вам найти решение вашей конкретной ситуации.
Оригинальный ответ на оригинальный вопрос об открытии картотеки без стандартного тега ссылки
Вы пробовали следующее?
tb_show('Title for thickbox','WHATEVER-YOU-WOULD-NORMALLY-PUT-IN-THE-HREF');
Я не использую Thickbox, но эта функция используется внутри системы, когда вы нажимаете на ссылку.