Откройте Fancybox (или equiv) из формы input type="submit"
Есть ли способ получить fancybox (http://fancy.klade.lv/) или любой
другой лайтбокс от отправки ФОРМЫ (с кнопкой изображения)?
HTML выглядит так:
<form action="/ACTION/FastFindObj" method="post">
<input name="fastfind" class="fastfind" value="3463" type="text">
<input name="weiter" type="submit">
</form>
Они не будут делать:
$("form").fancybox();
$("input").fancybox();
$("input[name='weiter']").fancybox();
Любой, кто обнаруживает мою ошибку или имеет обходное решение или альтернативу
script? Спасибо заранее
Ответы
Ответ 1
Я считаю, что все остальные ответы не совпадают с точкой вопроса (если только я не ошибаюсь). Я думаю, что автор хотел иметь его таким образом, чтобы при отправке формы его результаты отображались в fancybox. Я не нашел, что любой из других ответов обеспечил эту функциональность.
Для этого я использовал плагин jQuery Form (http://malsup.com/jquery/form/), чтобы легко преобразовать форму в вызов ajax. Затем я использовал обратный вызов успеха для загрузки ответа в fancybox с помощью ручного вызова в $.fancybox().
$(document).ready(function() {
$("#myForm").ajaxForm({
success: function(responseText){
$.fancybox({
'content' : responseText
});
}
});
});
Поэтому вместо прикрепления fancybox к некоторому искусственному <a> tag, вы присоединяете ajaxForm к самой форме.
Ответ 2
Лучше всего использовать "на лету" html, т.е.
$("#buttontoclick").click(function() {
$('<a href="path/to/whatever">Friendly description</a>').fancybox({
overlayShow: true
}).click();
});
Ответ 3
ПОПРОБУЙТЕ ЭТО
$(document).ready(function() {
$("#link").fancybox();
$("#btn").click(function(){
$("#link").trigger('click');
});
});
<input type="button" id="btn" value="Button" />
<div style="display:none;">
<a href="#test" id="link">Click</a>
</div>
<div id="test" style="display:none;">fancy box content</div>
при нажатии кнопки вы вызываете клик по скрытой ссылке href.
надеюсь, что это поможет
Ответ 4
Fancybox может напрямую обрабатывать запросы ajax без необходимости дополнительных сценариев jQuery.
$("#login_form").bind("submit", function() {
$.ajax({
type : "POST",
cache : false,
url : "/login.php",
data : $(this).serializeArray(),
success: function(data) {
$.fancybox(data);
}
});
return false;
});
<form action="/login.php" method="POST" id="login_form">
<input type="input" size="20" name="username" />
<input type="submit" value="Login" />
</form>
Ответ 5
Основано на
- Garland Pope оригинальное решение [меньше .ajaxForm]
- Решение AJAX для звонков Паоло Бергантино [в качестве замены на .ajaxForm]
- Fancybox загружает обработчик анимации по Myself [так что пользователь знает, что содержимое загружается]
-
$(document).ready(function() {
$("#myForm").submit(function() {
$.fancybox.showLoading(); // start fancybox loading animation
$.ajax({
data: $(this).serialize(), // get the form data
type: $(this).attr('method'), // GET or POST
url: $(this).attr('action'), // the file to call
success: function(response) { // on success..
$.fancybox({ 'content' : response }); // target response to fancybox
},
complete: function() { // on complete...
$.fancybox.hideLoading(); //stop fancybox loading animation
}
});
return false; // stop default submit event propagation
});
});
Ответ 6
Вы можете сделать ajax-представление данных формы, сохранить данные в сеансе и затем вызвать ссылку.
Ответ 7
Я только что боролся с этим и нашел способ отобразить результаты в iframe fancy box, я не очень хорошо разбираюсь в ajax, но для этого мне понадобилось php-решение, использующее jquery, какие-либо способы здесь, мой первый ответ!:
в вашем jquery.fancybox js файле потребуется небольшая настройка, я использовал jquery.fancybox.1.3.4.pack.js
. откройте это с помощью любого редактора и т.д. и выполните поиск: name="fancybox-frame
: thats it, должен быть только один экземпляр этого найденного и будет выглядеть так:
name="fancybox-frame'+(new Date).getTime()+'"
Теперь вы хотите переименовать целое:
fancybox-frame'+(new Date).getTime()+'`
ко всему, что вы хотите, я только что назвал его: "fbframe"
и сохраните файл. Теперь добавьте настройки jquery и форму следующим образом, и он должен работать нормально:
//activate jquery on page load and set onComplete the most important part of this working
$(document).ready(function(){
$("#a").fancybox({
'width' : '75%',
'height' : '100%',
'autoScale' : false,
'type' : 'iframe',
'onComplete':function (){$('#formid').submit();},
});
});
//function called onclick of form button.
function activatefancybox(Who){
$("#setID").val(Who); // i set the value of a hidden input on the form
$("#a").trigger('click');//trigger the hidden fancybox link
}
// hidden link
<a id="a" href='#'></a>
// form to submit to iframe to display results.
// it is important to set the target of the form to the name of
// the iframe you renamed in the fancybox js file.
<form name='iduser' id='iduser' action='page.php' target='fbframe' method='post'>
<input />
<input />
<input id='setID' type='hidden' name='userid' value='' />
<input type="button" onClick='testfb(123)' />
</form>
Прогресс:
нажмите отправить → функция вызова → функция нажмите ссылку FB → onComplete
onComplete Отправляет форму iframe после того, как FB загрузил ее! сделал.
Обратите внимание, что я вырвал это из моего текущего проекта и только что отредактировал некоторые необходимые части, я по-прежнему любительский кодер и рекомендовал бы ajax, если можно. и также я использую только FB1! FB2 теперь доступен.
Ответ 8
Это решение может служить вашей цели:
- no ajax calls
- использовать опцию fancybox iframe
- передать url [+ данные через метод jquery serialize] в опции fancybox href
- загрузка анимации осуществляется автоматически
-
$(document).ready(function(){
$('#yourform').submit(function() {
var url = $(this).attr("action") + "?" + $(this).serialize();
$.fancybox({
href: url,
'type': 'iframe'
});
return false;
});
});
Ответ 9
Я просто должен был это сделать. Вот как я это сделал.
$('#elementid').fancybox({
onStart : function() {
$.post($(this).attr('href'), $('#formid').serialize());
}
});
Таким образом, вы можете отправить форму и вызвать fancybox всего за один снимок. Он представляет собой стиль формы ajax. Кнопка "отправить" должна находиться в <a> тег.
Надеюсь, что это поможет.