Fylla i 2 hidden från checkbox?

PHPportalen Forum Index » HTML/CSS/JavaScript/Design
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
marcusgarden



Medlem i: 3018 dagar

Status: Offline



#742233
Inlägg Skrivet: 2018-06-30 23:35      Ämne: Fylla i 2 hidden från checkbox? Citera

Hej!

Jag har idag många formulär på samma sida.
Varje formulär har några hidden inputs, typ id, amount, etc.

Nu vill jag ha ETT formulär.

Jag tänkte mig att varje formulär idag ska ersättas av en checkbox, alltså betala den och den och den och den etc etc...

2 av de hidden jag har heter id och amount som sagt, jag kan idag fylla id med hjälp av jquery med

KOD:
1:
function Populate(){
2:
         vals = $('input[type="checkbox"]:checked').map(function() {
3:
            return this.value;
4:
         }).get().join(',');
5:
         console.log(vals);
6:
         $('#id').val(vals);
7:
      }
8:
 
9:
      $('input[type="checkbox"]').on('change', function() {
10:
         Populate()
11:
      }).change();


så att en kommaseparerad sträng fyller fältet id med t.ex. 34,67,89,2345

Men om jag nu vill fylla TVÅ hidden inputs med både en sträng med id:s samt en summa av alla valda ordrar att betala?

Alltså, varje order har en summa som ska betalas, om de ordrarna ovan har summor på 20kr, 40kr, 30kr och 100kr, så vil jag att SUMMAN av alla valda ordrar ska läggas i hidden fältet som heter amount...

Hur kan jag uppnå detta??

Tack på förhand!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
webbhelp



Medlem i: 4236 dagar
Från: Sverige
Status: Offline



#742234
Inlägg Skrivet: 2018-07-01 23:27      Ämne: Citera

Detta kanske inte fungerar för ditt syfte men jag testar ändå.

Att du tar bort hidden ID och amount.
Istället har du varje fält som en array t.ex.
KOD:
1:
<input name="form[one][type]">
2:
<input name="form[two][type]">
3:
<input name="form[three][type]">


På så sätt får du id:et (one, two, three) samt de olika fälten.
Summa, kr. De orden får mig att tänka att du inte ska räkna ut amount och lägga i ett hidden fält. Utan att istället räknar du ut detta där formuläret skickas till. Annars riskerar du att användaren ändrar fältens värde och summan blir då inkorrekt.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida MSN Messenger
marcusgarden



Medlem i: 3018 dagar

Status: Offline



#742235
Inlägg Skrivet: 2018-07-02 00:55      Ämne: Citera

Ok, tack för svar!

Jag har ingen möjlighet till det:/ Jag styr inte (helt) över sidan där jag landar.

Jag skulle vilja addera ett värde i ett fält varje gång en checkbox klickas i och subtrahera OM en redan checkad blir ocheckad.

Hur gör jag då?

Jag har provat en massa olika men lyckas inte riktigt:/

Tack på förhand!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
webbhelp



Medlem i: 4236 dagar
Från: Sverige
Status: Offline



#742236
Inlägg Skrivet: 2018-07-02 08:32      Ämne: Citera

Menar du så här?

KOD:
1:
var $checkboxes = $('input[type="checkbox"]:checked');
2:
function calculcateAmount()
3:
{
4:
    var amount = 0;
5:
    $checkboxes.each(function() {
6:
        amount += parseInt( $(this).val() );
7:
    });
8:
 
9:
    return amount;
10:
}
11:
 
12:
$checkboxes.on('change', function() {
13:
    $('#AMOUNT-TARGET').val( calculcateAmount() );
14:
});


När en checkbox ändras, loopar jag igenom alla checkboxar och summerar värdena. Det värdet jag får tillbaka använder du för att ändra input-hidden fältet (#AMOUNT-TARGET).

Klickar du ur en checkbox, så kommer den räkna allt på nytt och ersätta värdet med det nya.

Är det såhär du menar?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida MSN Messenger
marcusgarden



Medlem i: 3018 dagar

Status: Offline



#742237
Inlägg Skrivet: 2018-07-02 20:06      Ämne: Citera

Hej och jättemycket tack!

Ok, fungerar, nästan nu:)

När jag testar

KOD:
1:
$('input[class="one"]').on('change', function() {
2:
         
3:
         var checkboxes = $('input[class="two"]:checked');
4:
         function calculcateAmount()
5:
         {
6:
            var amount = 0;
7:
            checkboxes.each(function() {
8:
               amount += parseInt( $('input[class="two"]:checked').val() );
9:
            });
10:
         
11:
            return amount;
12:
         }
13:
         
14:
         checkboxes.on('change', function() {
15:
            $('#amount_to_pay').val( calculcateAmount() );
16:
         });
17:
         
18:
      }).change();


så läggs summor i #amount_to_pay men inte första gången, t.ex. de 5 första betalnigarna som ska göras är på 30kr/st, första klicket...händer inget...andra klicket ger 60, tredje klicket ger inget...

Jag måste klicka ur och i varje ruta för att uppdatera summan.
Jag har två uppsättningar checkboxar, den ena uppsättningen har class one, den andra har class 2.
Uppsättningen med class one innehåller order_id.
Uppsättnigen med class two innehåller price.

När checkbox med class one checkas ska motsvarande checkbox med class two och checkas (detta har jag idag med

KOD:
1:
var chk1 = $("input[id='ID_<?php echo $l->id; ?>']");
2:
                                    var chk2 = $("input[id='price_<?php echo $l->id; ?>']");
3:
 
4:
                                    chk1.on('change', function(){
5:
                                       chk2.prop('checked',this.checked);
6:
                                    });
)

Men price uppdateras inte als när jag checkar i de med class one.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
webbhelp



Medlem i: 4236 dagar
Från: Sverige
Status: Offline



#742238
Inlägg Skrivet: 2018-07-04 16:37      Ämne: Citera

Tjo!

Jag har skrivit om din kod lite och kommenterat allting, fråga om du undrar något.
Jag la även dit en codepen för att visa att du måste köra trigger('change') när du ändrar en checkbox checked värde och vill att ett on('change') event ska exekveras.

KOD:
1:
//Denna funktionen ska vara utanför de andra funktionerna. Jag såg att du la funktionen i on change eventen, det gör att funktionen deklareras om på nytt varje gång en checkbox ändras.
2:
function calculcateAmount()
3:
{
4:
   var amount = 0;
5:
   //Om det är en class så skriver du inte input[class="two"] (Även om det fungerar), utan du skriver input.two, såhär:
6:
   //Den här loopar igenom alla input med class "two" och adderar dess värde till variabeln amount
7:
   $('input.two:checked').each(function() {
8:
      amount += parseInt( $('input[class="two"]:checked').val() );
9:
   });
10:
 
11:
   return amount;
12:
}
13:
 
14:
//När en input med class "two" ändras, så ändras värdet av  #amount_to_pay värdet till summan av alla input.two
15:
//EXTRA::::::::::::::::
16:
//Om du vill att den även ska kolla on('change') på class "one" så skriver du bara såhär:
17:
//$('input.one, input.two')
18:
//Alltså ett komma (,) mellan input.one och input.two
19:
//Det innebär att om en input med klassen "one" eller "two" ändras, så kommer calculateAmount köras
20:
//EXTRA::::::::::::::::
21:
$('input.two').on('change', function() {
22:
   $('#amount_to_pay').val( calculcateAmount() );
23:
});
24:
 
25:
 
26:
//Angående koden:
27:
var chk1 = $("input[id='ID_<?php echo $l->id; ?>']");
28:
var chk2 = $("input[id='price_<?php echo $l->id; ?>']");
29:
 
30:
chk1.on('change', function(){
31:
   chk2.prop('checked',this.checked);
32:
});
33:
 
34:
//Ändra raden
35:
chk2.prop('checked',this.checked);
36:
//Till
37:
chk2.prop('checked',this.checked).trigger('change');
38:
//Om du vill att $('input.two').on('change', ...) ska köras när du ändrar checkboxen "checked"-läge manuellt.
39:
//https://codepen.io/anon/pen/QxRLxa?editors=1111
40:
 


https://codepen.io/anon/pen/QxRLxa?editors=1111
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Skicka e-post Besök användarens hemsida MSN Messenger
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » HTML/CSS/JavaScript/Design
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic