Kom ihåg mig?
Home Menu

Menu


Göra en loop istället?

Ämnesverktyg Visningsalternativ
Oläst 2009-12-22, 15:15 #1
sandstream sandstream är inte uppkopplad
Medlem
 
Reg.datum: May 2008
Inlägg: 130
sandstream sandstream är inte uppkopplad
Medlem
 
Reg.datum: May 2008
Inlägg: 130
Standard Göra en loop istället?

Hej!

Jag är usel på javascript men har iaf lyckats knåpa ihop en funktion som gör det jag vill men borde det inte gå att byta ut 10 IF-satser mot en och ha ett dynamiskt variabelnamn?

Det jag vill göra är att lägga ihop summan av 1 till 10 varibler, antalet varierar, för att se om totalen är mindre än 1 och då visa ett felmeddelande. Använder jQuery Form plugin för att hantera formuläret och hämta data med AJAX (det borde dock inte ha någon betydelse).

Så här ser koden ut:

function validate_crt(formData, jqForm, options) {
var antaltotal=0;
var form = jqForm[0];

if (form.antal1==undefined){}else{if (form.antal1.value>0) {antaltotal=antaltotal+form.antal1.value}}
if (form.antal2==undefined){}else{if (form.antal2.value>0) {antaltotal=antaltotal+form.antal2.value}}
if (form.antal3==undefined){}else{if (form.antal3.value>0) {antaltotal=antaltotal+form.antal3.value}}
if (form.antal4==undefined){}else{if (form.antal4.value>0) {antaltotal=antaltotal+form.antal4.value}}
if (form.antal5==undefined){}else{if (form.antal5.value>0) {antaltotal=antaltotal+form.antal5.value}}
if (form.antal6==undefined){}else{if (form.antal6.value>0) {antaltotal=antaltotal+form.antal6.value}}
if (form.antal7==undefined){}else{if (form.antal7.value>0) {antaltotal=antaltotal+form.antal7.value}}
if (form.antal8==undefined){}else{if (form.antal8.value>0) {antaltotal=antaltotal+form.antal8.value}}
if (form.antal9==undefined){}else{if (form.antal9.value>0) {antaltotal=antaltotal+form.antal9.value}}
if (form.antal10==undefined){}else{if (form.antal10.value>0) {antaltotal=antaltotal+form.antal10.value}}

if (antaltotal<1) {
alert('Skriv in önskat antal och klicka sedan på LÄGG I KUNDVAGNEN');
return false;
}
$('#kundvagn_submit').hide();
$('#kundvagn_submit_loading').show();
return true;
}


Några bra idéer?
sandstream är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-22, 16:48 #2
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
Citat:
Ursprungligen postat av sandstream Visa inlägg
Hej!

Jag är usel på javascript men har iaf lyckats knåpa ihop en funktion som gör det jag vill men borde det inte gå att byta ut 10 IF-satser mot en och ha ett dynamiskt variabelnamn?

Det jag vill göra är att lägga ihop summan av 1 till 10 varibler, antalet varierar, för att se om totalen är mindre än 1 och då visa ett felmeddelande. Använder jQuery Form plugin för att hantera formuläret och hämta data med AJAX (det borde dock inte ha någon betydelse).

Så här ser koden ut:

function validate_crt(formData, jqForm, options) {
var antaltotal=0;
var form = jqForm[0];

if (form.antal1==undefined){}else{if (form.antal1.value>0) {antaltotal=antaltotal+form.antal1.value}}
if (form.antal2==undefined){}else{if (form.antal2.value>0) {antaltotal=antaltotal+form.antal2.value}}
if (form.antal3==undefined){}else{if (form.antal3.value>0) {antaltotal=antaltotal+form.antal3.value}}
if (form.antal4==undefined){}else{if (form.antal4.value>0) {antaltotal=antaltotal+form.antal4.value}}
if (form.antal5==undefined){}else{if (form.antal5.value>0) {antaltotal=antaltotal+form.antal5.value}}
if (form.antal6==undefined){}else{if (form.antal6.value>0) {antaltotal=antaltotal+form.antal6.value}}
if (form.antal7==undefined){}else{if (form.antal7.value>0) {antaltotal=antaltotal+form.antal7.value}}
if (form.antal8==undefined){}else{if (form.antal8.value>0) {antaltotal=antaltotal+form.antal8.value}}
if (form.antal9==undefined){}else{if (form.antal9.value>0) {antaltotal=antaltotal+form.antal9.value}}
if (form.antal10==undefined){}else{if (form.antal10.value>0) {antaltotal=antaltotal+form.antal10.value}}

if (antaltotal<1) {
alert('Skriv in önskat antal och klicka sedan på LÄGG I KUNDVAGNEN');
return false;
}
$('#kundvagn_submit').hide();
$('#kundvagn_submit_loading').show();
return true;
}


Några bra idéer?
Har "antal"-fälten bara namn eller har de ID också?
ex.
Kod:
<input type="text" name="antal2" id="antal2" value="" />
Då kan du göra en loop liknande detta...
PHP-kod:
function validate_crt(formDatajqFormoptions) {
  var 
antaltotal=0;

  for ( var 
1<= 10i++ ) {
    var 
input = $('antal'+i);
    if ( 
typeof input ) != 'undefined' && input.value )
      
antaltotal += input.value;
  }

  if (
antaltotal<1) {
    
alert('Skriv in önskat antal och klicka sedan på LÄGG I KUNDVAGNEN');
    return 
false;
  }
  $(
'#kundvagn_submit').hide();
  $(
'#kundvagn_submit_loading').show();
  return 
true;


Senast redigerad av qson den 2009-12-22 klockan 16:49 Anledning: [php] istället för [code] blir lättare att läsa...
qson är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-23, 11:07 #3
sandstream sandstream är inte uppkopplad
Medlem
 
Reg.datum: May 2008
Inlägg: 130
sandstream sandstream är inte uppkopplad
Medlem
 
Reg.datum: May 2008
Inlägg: 130
De har både namn och id så jag testar din lösning! Återkommer!
sandstream är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-23, 11:22 #4
sandstream sandstream är inte uppkopplad
Medlem
 
Reg.datum: May 2008
Inlägg: 130
sandstream sandstream är inte uppkopplad
Medlem
 
Reg.datum: May 2008
Inlägg: 130
Tyvärr så fungerade det inte.
var form = jqForm[0]; måste vara med eftersom det är där variablerna ligger.

Så här skriver de om pluginen i ett exempel:
// jqForm is a jQuery object which wraps the form DOM element
//
// To validate, we can access the DOM elements directly and return true
// only if the values of both the username and password fields evaluate
// to true

var form = jqForm[0];
if (!form.username.value || !form.password.value) {
alert('Please enter a value for both Username and Password');
return false;
}
alert('Both fields contain values.');
sandstream är inte uppkopplad   Svara med citatSvara med citat
Oläst 2009-12-23, 11:42 #5
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
qson qson är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Sep 2006
Inlägg: 513
Citat:
Ursprungligen postat av sandstream Visa inlägg
Tyvärr så fungerade det inte.
var form = jqForm[0]; måste vara med eftersom det är där variablerna ligger.
Men om fälten har ID-attribut ska den fungera.
Ok vi gör ett nytt försök

PHP-kod:
function validate_crt(formDatajqFormoptions) {
  var 
antaltotal=0;
  var 
form jqForm[0];

  for ( var 
1<= 10i++ ) {
    var 
input form['antal'+i]; // Här har jag ändrat så den använder form istället
    
if ( typeof input ) != 'undefined' && input.value )
      
antaltotal += input.value;
  }

  if (
antaltotal<1) {
    
alert('Skriv in önskat antal och klicka sedan på LÄGG I KUNDVAGNEN');
    return 
false;
  }
  $(
'#kundvagn_submit').hide();
  $(
'#kundvagn_submit_loading').show();
  return 
true;

qson är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 04:28.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017