Autor Zpráva
Ryan
Profil *
Ahojte,
potrebujem poradiť: mám textový INPUT a vedľa neho 2 disabled buttony s hodnotami + a -

A teraz potrebujem nasledujúce:
- po kliknutí na INPUT (keď má focus) sa pozadie INPUTu nastaví na žlto. Buttony budú sa nastavia ako aktívne. .. [toto je OK]
- kliknutím na +/- sa pripočíta / odpočíta z INPUTU hodnota 1 [toto je tiež ok]
Problém je, že buttony +/- majú byť aktívne iba ak ma INPUT focus. Ak stratí focus, tak majú byť disabled. Čiže pokiaľ je kurzor vo vnútri INPUTu, tak je všetko OK. Ale keď kliknem na +/-, tak INPUT stratí focus a tým pádom nemá žlté pozadie a buttony su disabled.
A práveže potrebujem klikať na +/- ale aby kurzor bol vždy v INPUTe a pozadie bolo žlté. Pozadie a buttony sa zrušia, iba keď kliknem niekde mimo INPUTU.

Viete ma prosím naviesť ako to urobiť? Používam jQuery.
Ďakujem.
_es
Profil
Ryan:
Viete ma prosím naviesť ako to urobiť? Používam jQuery.
Na toto nepotrebuješ jQuery a ani to s jQuery nebude nejako jednoduchšie.
Tie "buttony" sú čo zač?
Bez "živej" ukážky ti dosť ťažko poradiť. Jedine tak nejak všeobecnejšie: použi udalosti onclick, onfocus, onblur, metódu focus, …
Ryan
Profil *
Buttony su klasické
<input type="reset" value="+" onclick="incerement();" />
<input type="reset" value="-" onclick="decrement();" />
Ryan
Profil *
Pridávam zdrojáky. Na event onblur pri INPUTe neviem dosiahnuť, aby sa buttony nastavili na "disabled"

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 <head>     		 		 		 		 		 		 		 		 		 		 		 		 		 		        <meta http-equiv="Content-Type" content="text/html charset=utf-8">

    <title>test</title>
    <link rel="stylesheet" type="text/css" href="style.css">
    <script type="text/javascript" src="jquery.js"></script>

    <style type="text/css">
    .inputFocus { background: yellow; }
    </style>
		
    <script type="text/javascript">
	
    function inputFocus(element)
    {
        $("#something").addClass('inputFocus');
        $(".btn").attr("disabled", false);
    }

    function inputBlur()
    {
        $("#something").removeClass('inputFocus');
        //   $(".btn").attr("disabled", true);
    }

    function increment()
    {
        var value = $('#something').attr('value');
        value++;
        $('#something').attr('value', value);
        $('#something').focus();
    }

    function decrement()
    {
        var value = $('#something').attr('value');
        value--;
        $('#something').attr('value', value);
        $('#something').focus();
    }
    </script>
</head>   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	
<body>
    <input type="text" id="something" name="something" value="0" onfocus="inputFocus();" onblur="inputBlur();" />
    <input type="reset" class="btn" value="+" onclick="increment();" disabled="disabled" />
    <input type="reset" class="btn" value="-" onclick="decrement();" disabled="disabled" />
</body>
</html>
Chamurappi
Profil
Reaguji na Ryana:
A práveže potrebujem klikať na +/- ale aby kurzor bol vždy v INPUTe a pozadie bolo žlté.
To dost dobře nejde. Minimálně v době kliknutí na tlačítko musí být kurzor mimo <input>. Na dobu, kdy mají focus ta resetovací tlačítka (proč jsou vůbec resetovací?), musíš pozdržet zrušení toho focusovacího efektu. Takže nějaký setTimeout, clearTimeout

$("#something").addClass('inputFocus');
Proč ho vyhledáváš, když si ho můžeš předat do funkce jako this?
_es
Profil
Ryan:
Nedávno sa tu tiež riešilo niečo s tým súvisiace: http://diskuse.jakpsatweb.cz/?action=vthread&forum=8&topic=117675&page=-1#12.

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:

0