Autor Zpráva
valecekm
Profil
Dobrý den, chtěl bych požádat o radu.
Používám kalendář jQuery http://jquery-navod.cz/kategorie-jquery-ui/jquery-ui-kalendar a datum vkládám do alternativního inputu. Problém je, že když v něm nastane změna hodnoty, tak by se mělo (něco provést není podstatné co, např.: alert()). Funguje to tak polovičatě. Když změním hodnotu RUČNĚ, tak hláška vyběhne, to je vpořádku, ale když nastane změna hodnoty přes jQuery KALENDÁŘ, tak se bohužel nic nestane, ikdyž se hodnoty(datum) opravdu změní. Nevíte v čem je problém a jak by se mohl dát vyřešit? Předem mockrát děkuji za případné odpovědi.

Ukázka v které nastává problém(zde nepřipojuji kalendář, jen ukázka problem. části), kalendář je původní, žádné změny v jeho kódu nebyly provedeny.

Pravděpodobně problémová část:
$("input[name='date_from']").bind("change",function () {
alert("Test: změna hodnoty provedena");
});

Zbytek js:
$.datepicker.setDefaults($.datepicker.regional['cs']);
$( "#datepicker1" ).datepicker({
            altField: "#date_from", // selektor alternativního inputu
            altFormat: "yy-mm-dd",  // format alternativniho data
            maxDate: 0,
            changeMonth: true, // vyber mesicu
            changeYear: true,  // vyber let
            showWeek: true // zobrazeni cisla dne
});
Kcko
Profil
valecekm:
Podívej se do dokumentace na eventy a metody. Bude tam něco jako onchage / onselect / ontrigger
valecekm
Profil
Kcko:
Pokud se nenazlobíš dovolil bych si opravit, ale vím, že to myslíš správně :-).
jako onchage / onselect / ontrigger“ - .change() / .select() / .trigger() ... bez on.. .on() v jQuery sice je, ale až od verze myslím teď 1.7. a v trošku jiné souvislosti, ovšem já toto nemohu použit, protože tuto verzi nemohu používat(díky verzy vyšší než 1.6.4. se znefunkční jiná část aplikace a stím nemohu nic dělat(zakoupená část kterou nemohu měnit)).

Řekněmě, že jsem na ně kouknul, ale můj problém je v tom, že change funguje jen na akci samotného uživatele(já osobně to změním a funguje), vidím možná problém někde v jQuery kalendáři, ovšem nevím kde, tipuji to ale na to, že když se do alternativního inputu vkládají hodnoty, tak mi to připadne, že se nevloží standartním způsobem bo nevím.

Ano, přiznávám, že s jQuery začínám, ale chápu a vím naco funguje .change(změna), .trigger(spoštěč akce), .bind(), .live(), odesílání formuláře díky ajaxu a jiné věci, rozhodně jsem tento kód řekněme nezkopíroval a nešoupnul do svýho, ale napsal, ikdyž s problémy a zkoušením. Místo alertu je odeslání formu přes ajax a jiné věci, které jsem sice nenapsal, protože jsou již samozřejmě napsané(tak proč je psát znova), ale chápu je, tak doufám, že to nebylo myšleno podobným způsobem jako: Něž se začneš ptát, tak to pochop a pročti si. ...?
Anglickému jazyku moc neholduji, takže případnou chybu(ať už jQuery-ikdyž je to méně pravděpodobné, či mou) ani nevím jak mám identifikovat. Samozřejmě fungování kalendáře též neznám z pohledu samotného zdoj. kódu a myslím si, že se tím ani programátoři moc nezabývají, protože pokud by se tím měli zabývat, tak by nedělali nic jiného.

Vycházel jsem z tohodle a upravil k obrazu svému http://api.jquery.com/change/.
Pokud by jsi tedy věděl v čem bude onen problém a jak se říká nakopnul mě tím směrem, tak budu rád, ale na určitou sekci, čili né řekněme někam kde než bych vše PEČLIVĚ prostudoval, tak by uběhnul měsíc.

Ale díky za odepsání na můj problém.

Potřeboval bych tedy návrh způsobu řešení, aby fungoval výše uvedený skript při změně inputu pomocí jQuery kalendáře, nikoli při změně samotným uživatelem. Pokud by někdo vědel jak opravit chybku v mém JS a opravil ji zde, budu velmi rád, ale NEPOTŘEBUJI TO, chtěl bych pouze poprosit o návrh řešení(js si sám pokusím vytvořit díky fcím, metodám atd. v jQuery).

Úprava:
Ještě bych chtěl podotknout, že pročítáním a pečlivím studováním jQuery bych možná vše pochopil, ale práce by mi pod rukama utekla a důležitá je podle mě praxe a souvislosti, nikoli jen teorie(př.: ten který si to vše nastudoval se semnou bude hádat, že schovat prvek jde přes .hide() když mu řeknu, že to půjde i jinak. Ikdyž .hide() vskutku vhodí css display:none; , čili by to šlo i přes samotné css). jQuery je natolik obsáhlá, že se nedá naučit ze dne na den, či z týdne na týden, ale postupem času, proto pokud sem něco nenašel, čím toto vyřešit, tak promiňte, ale i tak bych Vás chtěl poprosit.

Děkuji.
Kcko
Profil
valecekm:
Nepochopil si mě ;-)
koukni se do API toho kalendáře na eventy -> onSelect


onSelect

    function(dateText, inst)

Allows you to define your own event when the datepicker is selected. The function receives the selected date as text and the datepicker instance as parameters. this refers to the associated input field.
Code examples

Supply a callback function to handle the onSelect event as an init option.

    $('.selector').datepicker({
       onSelect: function(dateText, inst) { ... }
    });
valecekm
Profil
Kcko:

Díky moc ;-).

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: