Jump to content
  • 0

(document).ready много раз


alex_anderr
 Share

Question

$(document).ready(function()
{
$("#go").click( function ()
{
$("#result").html('<img src="../images/loader.gif" alt="Uploading..."/>');
});

$("#post").ajaxForm(
{
target: '#result',
success: function() {
$("#result").delay(3500).fadeOut();
},
});
});

Скрипт должен выполнятся для большого количества форм на странице. А выполняется на одной форме и перестает работать.

Я понимаю, что .ready выполняется один раз, думаю о функции, которая ссылается сама на себя внутри .ready, но она тож не работает :)

Подскажите в какую сторону мыслить, для создания "постоянно работающего" скрипта на странице.

Link to comment
Share on other sites

12 answers to this question

Recommended Posts

  • 0

Мда, с айди вместо классов эт я конечно лоханулся :)

Про .each() прочитал. Да, это подходит )

С индексами не очень разобрался. Получается что .each ( function (index) {} надо поставить чтобы каждая из форм работала отдельно.


$(".form").each( function (index) {
$(".form").ajaxForm(
{
target: '.butt',
success: function() {
$(".butt").delay(3500).fadeOut();
},
});
});

Повторяющийся цикл:


<form class='.form'>
<input />
<div class='.butt'><button type='submit'></button></div>
</form>

Так как JS я еще знаю фиговенько, то прошу помощи в исправлении :)

Можно направить вместо готового решения.

Edited by alex_anderr
Link to comment
Share on other sites

  • 0

each не нужен, просто ID на классы замените, обработчик должен сесть на все формы сам.

А вот в чем проблема будет, так это в разобраться как отличить .butt один от другого для записи результата ;)

Link to comment
Share on other sites

  • 0
success

Callback function to be invoked after the form has been submitted. If a 'success' callback function is provided it is invoked after the response has been returned from the server. It is passed the following arguments:

1.) responseText or responseXML value (depending on the value of the dataType option).

2.) statusText

3.) xhr (or the jQuery-wrapped form element if using jQuery < 1.4)

4.) jQuery-wrapped form element (or undefined if using jQuery < 1.4)

Default value: null

Вот 4-м параметром передается jquery объект формы, т.е. можно сказать что-то вроде $(".butt", param). ...

Link to comment
Share on other sites

  • 0

$(function() {
$(".form").submit(function(event){

//event.preventDefault();

$(this).find(".butt").html('<img src="../images/loaderA16.gif" alt="Uploading..." />');

var block = $(this).find(".invis")[0];
var success = function(result){ $(block).html(result); }
var error = function(){ $(block).html('<span style="color:red;">Cant load data </span>'); }
var m_data = $(this).serialize();

$.ajax({
'url' : "action.php",
'type' : "POST",
'dataType': "JSON",
'data' : m_data,
'success': success,
'error' : error
});
return false;
});
});

Решилось все проще. $(this) выручил.

Терь не отправляется .ajax

if (isset($_POST['GO_one']))
{
$id = $_POST['id'];
$vis = $_POST['vis'];

include('../connect.php');
$sql_un = "UPDATE table SET vis = '0' WHERE id = '$id'";
if (mysql_query($sql_un))
{
echo "<p>Йее. Кавабанга!</p>";
} else {
echo "<p>okay </p>";
}
}

<form class='form' action='action.php' enctype='multipart/form-data' method='post'>
<input />
<div class='.butt'><button type='submit' name='GO_one'></button></div>
<div class='.butt2'><button type='submit' name='GO_two'></button></div>
</form>

Спустя пару дней одна из проблем решилась, но как всегда в программном деле вылезли еще две :)

1. Форма не отправляется. С .ajax() первый раз. Возможно один из обязательных оптионов не указал для корректной работы.

2. Если кнопок несколько, то все равно функция скрипта выполняется для первой кнопки.

О, боги, спасите :)

--

UPD1: Проблем решился после уборки из скрипта условия if (isset($_POST['GO_one'])).

Получается, что .ajax не передает name кнопки?

Второй вопрос пока еще в процессе решения. Раз форма одна и обработчик не знает какой именно из сабмитов был нажат, то придется делать несколько отдельных скриптов и омещать их в отдельные файлы, а при нажатии кнопки подставлять в атрибут action формы. Еще одно извращение на моем пути, но пока вижу только этот вариант :)

Edited by alex_anderr
Link to comment
Share on other sites

  • 0

value для кнопки укажите

правда .serialize() вроде не передает значения кнопки

заведите hidden поле и делайте как-то так

$("button:submit").click(function() {
$(this).closest("FORM").find("INPUT[name=.....]").val($(this).val());
});

или вообще так

$("button:submit").click(function() {
var newinp = $("<INPUT type='hidden' class='js-appended-input'/>").attr("name", $(this).attr("name")).val($(this).val());
$(this).closest("FORM")
.find(".js-appended-input")
.remove()
.end()
.append(newinp);
});

Или просто обработчик сажать не на сабмит, а на нажатие кнопки как тут и добавлять имя/значение нажатой кнопки к сериализованной строке.

Edited by MiksIr
  • Like 1
Link to comment
Share on other sites

  • 0

Не, с value тоже не работает. Он указан.

--

Это вариант.

Пробую идти по другому пути.

При нажатии на кнопку с определенным классом подставлять в форму другой скрипт на экшн. И после подстановки выполнять запрос.

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

--

UPD:

Зафигачил к кнопке событие онклик.

Ваш вариант был клевым и полезным, я его использовал. Спасибо.

Edited by alex_anderr
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy