Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]jQuery zmiana opcji w select...
Forum PHP.pl > Forum > Przedszkole
Elber
Witam,

mam pole select i w nim dwie opcje jak zmienić za 'zaznaczyć' jedną z tych opcji poprzez jQuery, tak aby wykonały się funkcję jak przy zmianie tego pola 'ręcznie' myszką ?
Próbuję

$('#attribute964 option[value="ID"]').attr("selected","selected");

zmienia zawartość, ale nie wykonują się funkcje przypisane do tego pola ;/
nospor
Żeby zaznaczyć jakąś wartosc w select to:
Kod
$('#idtwojegoselecta').val('wartoscdozaznaczenia');

A jakie zdarzenie podpiąłeś? Bo jak onclick to logiczne ze nie dziala. Jak onchange to powinno zadziałać dla mojego kodu (chyba)
Jak dałeś onclick to:
Kod
$('#idtwojegoselecta').val('wartoscdozaznaczenia');
$('#idtwojegoselecta').click(); //lub coś w ten desen

Elber
Właśnie nie wiem jakie zdarzenie tam jest, bo to w sklepie magento w widoku produktu, po zmianie tego selecta zmienia się cena ...

Kod
$('#idtwojegoselecta').val('wartoscdozaznaczenia');
$('#idtwojegoselecta').click(); //lub coś w ten desen

nie działa, znaczy select się zmienia ale funkcje sie nie wykounją ...
d3ut3r
Jeżeli jest to podpięte pod onchange to powinno zadziałać:

Kod
$('#idtwojegoselecta').val('nowa_wartość');
$('#idtwojegoselecta').change();
Elber
Próbowałem już...ale nie działa ;/

A jak mogę sprawdzić co dokładnie się dzieje po zmianie tego selecta ? Jakie funkcje sie wykonują
Sky_walker
Firebug

Console->Enable
potem klikasz Profile
robisz rzeczy na stronie i klikasz Profile ponownie
w rezultacie otrzymujesz listę odpalonych funkcji wraz z ich wydajnością.

Poza tym konsola pokaże ci błędy Java Script - skopiuj jakie ci wyskakują i pokaż nam, może będziemy mogli pomóc smile.gif
Elber
Nie ma żadnych błędów JS wink.gif
jaslanin
o coś takiego ci chodzi?

http://jsfiddle.net/EfRSq/
Elber
Niestety też tylko zmienia select'a a cena zostaje bez zmian... podaję linka do tego, to jest kopia tego sklepu

http://www.hellux.home.pl/hansekind/german...arderobe-1.html

Chodzi o to że jak się klinie w 3 Hacken lub 5 Hacken zmienia się wielkość tej belki gdzie układa się te litery i motywy, i po prawej na dole jest cena i jeszcze niżej jest *Länge i tam jest select do wyboru, jak się tam ręcznie wybierze Garderobe 5 Haken (63cm) +10.00 € to cena się zmienia, ale jak w jQuery to zmienie to cena się nie zmienia sad.gif
jaslanin
z tego co zauważyłem, to żeby cena była zmieniana wywoływana jest funkcja:

Kod
onchange="opConfig.reloadPrice()"


może to pomoże
Elber
nawet jak po $('#idtwojegoselecta').val('nowa_wartość'); dam opConfig.reloadPrice(); to nic się nie dzieje sad.gif

Nikt nie ma pomysłu jak to zrobićquestionmark.gif
maviozo
$().trigger("change") próbowałeś?
Kostek.88
Cholera... Fiddle mi się nie odpala, zatem nie testowałem...

  1. $('#attribute964 option[value="ID"]').attr("selected","selected").focus();


questionmark.gif
d3ut3r
Obsługą zdarzenia zajmuje się prototype, dlatego odpalanie zdarzenia z jquery nie działa tak jak powinno.

Twój problem można rozwiązać tak jak napisano tutaj:

http://stackoverflow.com/questions/460644/...-with-prototype

Elber
Cytat(d3ut3r @ 23.03.2012, 01:36:59 ) *
Obsługą zdarzenia zajmuje się prototype, dlatego odpalanie zdarzenia z jquery nie działa tak jak powinno.

Twój problem można rozwiązać tak jak napisano tutaj:

http://stackoverflow.com/questions/460644/...-with-prototype

O którym sposobie dokładnie mówisz ?

Nic nie działa wyskakują błędy jakieś ;/

Co mam zrobić aby ta cena mi się zmieniła po zmianie tego pola poprzez jQuery ? o co z tym prototype chodzi ?
d3ut3r
w linku który Ci dałem, masz napisane jak za pomocą prototype wywołać zdarzenie czyli zdarzenie typu Click , onchange etc.

Po kolei:
1. ściągasz plik: https://github.com/kangax/protolicious/blob...ent.simulate.js
2. includujesz go u siebie
3. a następnie odpalasz metodą .simulate('onchange') na obiekcie który zmieniałeś za pomocą jQuery.

Powinno zadziałać
Elber
Próbowałem już tak, dostaje w konsoli error:

Uncaught TypeError: Object #<Object> has no method 'simulate'

OK rozwiązane ;D

wystarczyło dodać na początku funkcję:

Kod
function triggerEvent(element, eventName)
{
    if (document.createEvent)
    {
        var evt = document.createEvent('HTMLEvents');
        evt.initEvent(eventName, true, true);

        return element.dispatchEvent(evt);
    }

    if (element.fireEvent)
        return element.fireEvent('on' + eventName);
}


i później ją wywołać:

triggerEvent(document.getElementById('id_selecta'), 'change');
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.