Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery.format] Działa po Chrome i IE(sic!), nie działa pod Fx
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
korro
Witam.
Używam jQuery.format do dynamicznego budowania treści.
Wygląda to tak:
Szablon:
  1. <div id="links" style="display: none;">
  2. Stary link:<a href="{0}">{0}</a><br>
  3. Nowy link:<a href="{1}">{1}</a><br>
  4. Nowy link:<input name="shorted" id="shorted" class="select" value="{1}"><br>
  5. Nowy link:<a href="{2}">{2}</a><br>
  6. Nowy link:<input name="shorted2" id="shorted2" class="select" value="{2}">
  7. </div>

Wywołanie w JS:
  1. var ajaxOutput = jQuery.format($("#links").html());
  2. var first = "http://" + data + ".<?=$_SERVER["SERVER_NAME"]?>";
  3. var second = "http://<?=$_SERVER["SERVER_NAME"]?>/" + data;
  4. $("#utnij").html(ajaxOutput(longLink,first,second));

Wynik pod FX:
  1. <div id="utnij" align="center" style="opacity: 1;">
  2. Stary link:
  3. <a href="%7B0%7D">http://wp.pl</a>
  4. <br/>
  5. Nowy link:
  6. <a href="%7B1%7D">http://2h.localhost</a>
  7. <br/>
  8. Nowy link:
  9. <input id="shorted" class="select" value="http://2h.localhost" name="shorted"/>
  10. <br/>
  11. Nowy link:
  12. <a href="%7B2%7D">http://localhost/2h</a>
  13. <br/>
  14. Nowy link:
  15. <input id="shorted2" class="select" value="http://localhost/2h" name="shorted2"/>
  16. </div>

Jak widać w href'ach powinno być to samo, to w tekście linka.
W tym przypadku w href jest: "%7B0%7D" czyli {0}.

jQuery nie wszędzie w miejsce {x} podstawia parametr.

Czy to może być spowodowane?
Macie jakiś pomysł?
Z góry dziękuję.


Doszedłem.
Firefox domyślnie encoduje znaki które są url'em w treści strony, stąd parser nie znajdował { i }.
Rozwiązaniem było dopisanie linijki kodu do biblioteki jquery.validate.js.
phpion
Cytat(korro @ 15.09.2009, 12:50:30 ) *
Doszedłem.
Firefox domyślnie encoduje znaki które są url'em w treści strony, stąd parser nie znajdował { i }.
Rozwiązaniem było dopisanie linijki kodu do biblioteki jquery.validate.js.

Fajnie, ale może uchyliłbyś rąbka tajemnicy i podał tą magiczną linijkę? Informacja, że Tobie się udało może być dla kogoś stosunkowo mało pomocna.

winksmiley.jpg
korro
Fakt. Sam piętnuję takie zachowanie na forum, a teraz dostałem jakiegoś zaćmienia.
Oryginalny kod:
Kod
$.each(params, function(i, n) {
        source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);    
    });

działający:
Kod
$.each(params, function(i, n) {
        source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);    
        source = source.replace(new RegExp("\\%7B" + i + "\\%7D", "g"), n);
    });

linia 195.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.