Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JQuery] click(fn) na input radio - działa poprawnie tylko w FF
thorin87
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 22.08.2009

Ostrzeżenie: (0%)
-----


Witam,
Mój cel (którego nie mogę osiągnąć): wiele inputów radio na stronie, po kliknięciu któregokolwiek wyświetla się loader, wykonuje się ajax typu post który trwa 2-3 sekundy (koniecznie z parametrem async:false), skrypt robi kilka operacji na otrzymanych danych (ale to wyciąłem i dalej nie działa), loader znika.

Problem: w FF działa idealnie, w IE (każdym!) po kliknieciu w radio robi się taki jak tylko po mousedown (jakbysmy nacisneli lpm na radio i nie puszczajac opuscili radio), w takim stanie zostaje przez czas oczekiwania na odpowiedz od ajaxa, loader się nie wyświetla, ajax konczy dzialanie, wtedy dopiero radio wyglada jak faktycznie wciśnięte. Loadera nie widać ani przez moment.

Kod:

strona:
Kod
    <form>
      <input type="radio" name="nazwa" />
      <input type="radio" name="nazwa" />
      <input type="radio" name="nazwa" />
      <input type="radio" name="nazwa" />
      <input type="radio" name="nazwa" />
      <input type="radio" name="nazwa" />
      <input type="radio" name="nazwa" />
    </form>
    <img class="loadin" src="<?=base_url()?>images/ajax-loader.gif" style="display:none" />


1 próba:
Kod
$(document).ready(function() {
        $("input[type='radio']").click(function() {
          $(".loadin").show();
          $.ajax({
            type: "POST",
            url: "tu jest url",
            async: false,
            data: ({xxx : 'xxx'}),
            success: function(msg){$("body").append(msg)}, //to tak przykladowo
            error: function() {return 0;}
          });
          $(".loadin").hide();
        });
      });


2 próba:
Kod
$(document).ready(function() {
        $("input[type='radio']").click(function() {
          $.ajax({
            type: "POST",
            url: "tu jest url",
            async: false,
            data: ({xxx : 'xxx'}),
            beforeSend: function(){$(".loadin").show();},
            complete: function(){$(".loadin").hide();},
            success: function(msg){$("body").append(msg)},
            error: function() {return 0;}
          });
        });
      });


3 próba:
Kod
$(document).ready(function() {
    $(".loadin").ajaxStart(function(){
       $(this).show();
    });
    $(".loadin").ajaxStop(function(){
       $(this).hide();
    });
        $("input[type='radio']").click(function() {
          $.ajax({
            type: "POST",
            url: "tu jest url",
            async: false,
            data: ({xxx : 'xxx'}),
            success: function(msg){$("body").append(msg)},
            error: function() {return 0;}
          });
        });
      });


Pomysły? Czy to tylko wspaniałomyślność (it's not a bug, it's a feature!) firefoxa, że to zadziało, czy błąd ie?

Ten post edytował thorin87 21.01.2010, 00:41:02
Go to the top of the page
+Quote Post
erix
post
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Puść to gdzieś na żywo, z opisu coś słabo rozumiem. (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Crozin
post
Post #3





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie jestem pewien, ale chyba powinieneś użyć zdarzenia change zamiast click.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.09.2025 - 10:17