'Change' z inputu przerywa przekierowanie po kliknięciu w odnośnik

0

Witajcie.

Mam taką sytuację - do inputu zbindowałem handler przy evencie change np:

$('#Input').change(function() {
  alert('Change z inputu');
});

Handler odpala się dopiero po stracie focusa na przycisku. Jeśli wpisałem coś do inputa i kliknę w odnośnik, to uruchamia mi się handler, wyskakuje alert, a przekierowanie jest zatrzymywane. Jak drugi raz kliknę to przekierowuje.

Dlaczego się tak dzieje? Jak zrobić, by dalej przekierowywało / nie zatrzymywało kolejnych eventów?

PS. Jakbym coś niepoprawnie napisał, to wpiszcie w komentarzu to poprawię, bo średnio się orientuję w jquery.

1

Fajnie by było jakbyś zamiast snuć opowieści o swoim kodzie wrzucał przykład na jsbin.com:
http://jsbin.com/ovajex/1/
Szybciej będzie widać o co chodzi. Oczywiście nie ma to zastosowania dla kodów na kilometr (ale z drugiej strony posty z kodem na kilometr wskazują na osobę, która kompletnie się nie orientuje w tym co robi).

W każdym razie - tak dzieje sie na IE/FF/Chrome, na Operze działa wg Twoich założeń. Ciężko określić, które zachowanie jest "poprawne". Dzieje się tak zapewne dlatego, że przeglądarka (bez Opery) po kliknięciu gdziekolwiek pierwsze interpretuje stratę focusa (co jest niby logiczne) i od razu wykonuje zawarte w handlerach instrukcje, w Twoim przypadku alert, który przysłania stronę i blokuje możliwość klikania po niej. Opera zapewne jakoś inaczej sobie to kolejkuje i reaguje na to, że pierwsze jest strata focusa, ale zaraz po tym trzeba wywołać to kliknięcie.

0

Nie wiem czy zakładać nowy temat, jct tak zrobię.

Mam następny problem. Do funkcji przesyłam obiekt, następnie ten obiekt modyfikuję w innej funkcji. Jednak zmiany w obiekcie nie są widziane w pierwszej funkcji. Gdzie jest błąd?

W bindClickEvent przesyłam do a.click obiekt. Następnie bindChangeEvent zmienia pole tego obiektu - formValuesChanged. Ale ta zmiana nie jest widoczna w click w bindClickEvent - tak jakby działały na 2 różnych obiektach. Błąd może być w przesłaniu this do bindClickEvent przez event.data, ale jeśli tak to dlaczego?

Kod: http://jsbin.com/uhikac/2/edit

0

Nie mam czasu zbyt analizować teraz, ale kto Cię uczył inputy tworzyć w ten sposób:

<input>zawartosc</input>

To chyba nawet widać, że to nie działa..

Tak ma być:

<input value="zawartosc" />
0

Dodałem opis, by ułatwić zrozumienie kodu :)

edit: naprawiłem. W control.change odwoływałem się do this, a przecież this się zmieniał. Dodałem obiekt thisObject i działa. <facepalm>

1 użytkowników online, w tym zalogowanych: 0, gości: 1