Поддержка JQuery JQModal AJAX
Я пользуюсь модалом на сайте, и у меня возникают проблемы с достижением чего-то: модал, который я использую, - это jqModal, найденный здесь: http://dev.iceburg.net/jquery/jqModal/
У меня нет проблем с инициализацией одного модального.
<script type="text/javascript">$().ready(function() {
$('#cartdialog').jqm({ajax:'@href',trigger: 'a.jqModalcart'});
});</script>
<a class="jqModalcart" href="/ash/shop/cart2.php"><img src="/ash/images/viewcart.gif"
alt="viewcart"/></a>
Это загрузит мой основной модал, который отображает содержимое cart2.php.
Вот проблема, и я знаю, что может быть несколько решений. На cart2.php есть кнопка, которую я хочу, чтобы пользователь нажимал, чтобы модал загружал новый контент с другой страницы (shipping.php). Предпочтительно, он заменяет cart2.php на shipping.php без необходимости открывать и закрывать модалы или вложенные модалы, которые перекрывают текущий.
Еще более усложняя ситуацию, необходимо загрузить shipping.php с почтовым индексом, для которого я написал простой валидатор javascript. Ссылка, которую нужно передать, выглядит следующим образом:
href=("/ash/shop/shipping.php?zip=" + document.form9.zip.value)
Я знаю, что могу получить эту ссылку в модале, инициализируя ее так:
<script type="text/javascript">$().ready(function() {
$('#idhere').jqm({ajax:'@href',trigger: 'a.classhere'});
});</script>
Тем не менее, я не могу "запустить" модальное из модального.
Поэтому у меня много вопросов: 1) Могу ли я оставить один модальный и изменить то, что внутри него загружается через AJAX (в основном, переходить на страницы внутри одного модального окна и обратно)? ИДЕАЛЬНОЕ РЕШЕНИЕ!!!! 2) Если нет... как я могу создать вложенный модал, который будет отображаться поверх основного модала и загрузить ссылку выше, которая требует информацию из моего валидатора почтового индекса (я могу дать ajax:'linkhere'), но моя ссылка имеет эта часть добавлена в конец валидатора "+ document.form9.zip.value" 3) Если это невозможно... как я могу сделать так, чтобы кнопка на главном модале ПЕРВАЯ закрыла главный модал, ТО загрузила вторичный модал с новым контентом, содержащим ссылку + почтовый индекс
Я попытался представить это самым ясным способом, которым я могу вывести это из своего мозга. Я буду рад ответить на любые вопросы по этому поводу, поскольку я полностью понимаю, что, возможно, я не совсем понял
Подробнее... Я пробовал.load() безуспешно, но, скорее всего, потому что у меня очень мало навыков в этой области. Вот мой скрипт почтового индекса. У меня так, что после ввода 5 символов ссылка меняется так, что пользователь сначала видит "ввести почтовый индекс", а затем видит "рассчитать доставку" и также меняется href.
<script language="javascript">
function movepic(img_name,img_src) {
document[img_name].src=img_src;
}
</script>
<script language="javascript" type="text/javascript">
function limitText(limitField, limitCount, limitNum) {
if (limitField.value.length == limitNum) {
limitField.value = limitField.value.substring(0, limitNum);
//switch image out
javascript:movepic('button','/ash/images/calculateshipping.gif');
//change image link
document.getElementById("tester").href=("/ash/shop/shipping.php?zip=" + document.form9.zip.value);
document.getElementById("tester").onclick=function(){$('#cartdialog').load("/ash/shop/shipping.php?zip=" + document.form9.zip.value);};
} else {
limitCount.value = limitNum - limitField.value.length;
}
}
</script>
Мой HTML имеет форму...
<form id="form9" name="form9" method="post" action="">
<a id="tester" name="tester" class="jqModalship" href="#" style="margin-right:4px;"><img name="button" src="/ash/images/enterzipcode.gif" alt="Image"></a>
<input name="zip" type="text" size="5" onKeyDown="limitText(this.form.zip,this.form.countdown,5);"
onKeyUp="limitText(this.form.zip,this.form.countdown,5);" maxlength="5">
</form>
Почему я не могу загрузить новую страницу в модал, используя вышеуказанное?
1 ответ
Чтобы изменить содержимое модала, вы можете использовать.load() для обновления div модала.
В качестве альтернативы вы можете использовать возможности iframe (см. #7 на http://dev.iceburg.net/jquery/jqModal/). Это позволило бы "перемещаться по модалу", о котором вы говорили.
Второй вариант, вероятно, должен был бы загрузить слушателя второго модала вместе с ним, так как я не уверен, что jqModal разрешает отложенную загрузку (работает над кодом, введенным в DOM после инициализации... как.live())
Третий вариант - это хакерская молитва. Это сработает, но вы не хотите использовать это.