Autor Zpráva
maycza
Profil
Zdravím všechny,

snažím se v jquery vyřešit takovou věc. Mám v tabulku s několika buňkami, ve kterých jsou buttony + a - a mezi nimi <input type="text">. Chci udělat, aby mi tlačítka + a - po kliknutí přidávali nebo ubírali hodnoty v inputu. Pokud bych měl jednu buňku tak to není problém, ale když je jich několik... jediné čeho jsem dosáhl je to, že mi to přidává a ubírá hodnoty vě všech inputech. Vím proč to dělá, ale nevím jak to udělat v rámci konkrétní buňky..

HTML:
<table>
   <tr><td><input type='button' class='minus'><input type='text' class='cislo'><input type='button' class='plus'></td></tr>
   <tr><td><input type='button' class='minus'><input type='text' class='cislo'><input type='button' class='plus'></td></tr>
</table>

jQuery
(přidává a ubírá všude, zkoušel sem to dát celé do $("td").hover(functiom(){...}); .. ale taky nic)

$(".plus").click(function(){
  var vyhry=$(".cislo").val();
  vyhry++;
  $(".plus").prev("input").val(vyhry);
});

$(".minus").click(function(){
  var vyhry=$(".cislo").val();
  if (vyhry>0){
    vyhry--;
    $(".minus").next("input").val(vyhry);
  }
});

Máte s tím někdo nějaké zkušenosti? Když tak se podělte :) díky
juriad
Profil
$(".plus").click(function(){
  var vyhry=$(".cislo", this).val();
  vyhry++;
  $(".cislo", this).val(vyhry);
});
 
$(".minus").click(function(){
  var vyhry=$(".cislo", this).val();
  if (vyhry>0){
    vyhry--;
    $(".cislo", this).val(vyhry);
  }
});
maycza
Profil
juriad:
$(".cislo", this).val() podle mě bere jako potomka třídy "plus" a "minus", ne jako potomka dané buňky... zřejmě proto to i nefunguje. Ale i tak díky :)


Už to mám! :D

$(".plus",this).click(function(){
  var vyhry=$(this).prev("input").val();
  vyhry++;
  $(this).prev("input").val(vyhry);
});

$(".minus").click(function(){
  var vyhry=$(this).next("input").val();
  if (vyhry>0){
    vyhry--;
    $(this).next("input").val(vyhry);
  }
});
mylan
Profil
Čo takto:
$(".plus, .minus").click(function() {
    var vyhry = $(this).closest("td").find("input.cislo");
    vyhry.val(Number(vyhry.val()) + ($(this).is(".minus") ? -1 : 1));
});
Chamurappi
Profil
Reaguji na mayczu:
Kdybych měl jistotu, že bude HTML kód vypadal takhle, tak bych dal jednomu tlačítku onclick="this.nextSibling.value--" a druhému onclick="this.previousSibling.value++". Nepotřeboval bych ani class, ani dodatečně vyhledávat podle třídy, ani kontrolovat názvy elementů…
maycza
Profil
V js a jquery jsem celkem začátečník, takže nevím proč mě nefunguje Chamurappiho řešení... jenom sem tvůj kód přidal tlačítkám, takže mi možná něco uniká...

Mylan:
tak nějak sem si to představoval, řešení na dva řádky :-D super! :)

Díky všem za rady ! :)
Chamurappi
Profil
Reaguji na mayczu:
takže nevím proč mě nefunguje Chamurappiho řešení... jenom sem tvůj kód přidal tlačítkám
To stačí a fungovat by to mělo. Pokud opravdu tvůj kód opravdu vypadá tak, jak uvádíš v prvním příspěvku…

tak nějak sem si to představoval, řešení na dva řádky :-D
Když nepočítáš těch 9800, které kvůli tomu musíš linkovat.
Určitě by šlo udělat i řešení na jeden řádek a všechno ostatní schovat do externího souboru :-)
maycza
Profil
Chamurappi:
máš pravdu, funguje to, měl jsem každý input zvlášť na řádku...

Kód, který jsem sem vložil byl jenom příklad, ve skutečnosti je to tabulka s asi 15ti řádky a 6 sloupci (klasická fotbalová tabulka V R P Skóre B), ve které upravuju číselné hodnoty a ukládám do tabulky v mysql. Chtěl jsem si zjednodušit to neustálé vyťukávání čísel, takto jenom kliknu... a teď mi došlo, že to mínus je tam vlastně úplně zbytečné 0:-) :D

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: