Avatar billede dannv Nybegynder
04. november 2004 - 14:34 Der er 11 kommentarer og
1 løsning

Form validering text eller numeric (dynamisk antal felter i form!

Jeg har en form hvor jeg gerne vil have foretaget validering af indholdet i nogle felter.

Der er et ukendt antal tekstfelter, og til dette felt er der info om det er numerisk eller text felt. Hvis der er tale om et numerisk felt vil jeg teste at indholdet i mit tekst felt er enten tal eller '.' (punktum = komma seperator) eller er blank!

Scriptet skal bruges på lidt forskellige måder. 1: info om text/numerisk er i tekst. 2: info er i select box!

Jeg har nogle validerings funk. som jeg allerede benytter:

function validateForm(form)
{
if(trim(form.result_min.value) != "")
{
    if(isPositiveInteger(form.result_min.value)==false)
    {
        alert("Please fill a valid ... using '.' as decimal seperator");
        form.result.focus();
        return false;
    }
}
return true;
}
Avatar billede dannv Nybegynder
04. november 2004 - 14:38 #1
Problemet er i min nye form at jeg ikke kender antallet af felter på forhånd, så jeg skal på dynamisk vis have fat på antallet af felter og hvis felter skal være numerisk skal det validers...

håber dette kan hjælpe
Avatar billede olebole Juniormester
04. november 2004 - 14:44 #2
<ole>

function validateForm(f) {
    for (i=0; i<f.elements.length; i++) {
        var e = f.elements[i];
        if (e.type!="text") continue;
        if(trim(e.value) != "") {
            if(isPositiveInteger(e.value)==false) {
                alert("Please fill a valid ... using '.' as decimal seperator");
                f.result.focus();
                return false;
            }
        }
    }
    return true;
}

/mvh
</bole>
Avatar billede olebole Juniormester
04. november 2004 - 14:45 #3
Oooops:

function validateForm(f) {
    for (i=0; i<f.elements.length; i++) {
        var e = f.elements[i];
        if (e.type!="text") continue;
        if(trim(e.value) != "") {
            if(isPositiveInteger(e.value)==false) {
                alert("Please fill a valid ... using '.' as decimal seperator");
                e.focus();
                return false;
            }
        }
    }
    return true;
}
Avatar billede dannv Nybegynder
04. november 2004 - 15:05 #4
jeg prøver lige men først en kommentar til, hvis jeg ikke var specifik nok!

Jeg har i det ene tilfælde følgende:

--tekstbox-- --tekstbox-- --select-- (+nogle andre felter....)
--tekstbox-- --tekstbox-- --select-- (+nogle andre felter....)

(name for elementer er efter følgende opskrift:

--result_min_7-- --result_max_7-- result_type_7---
)

.... etc

Hvis brugeren i select vælger numeric skal de to felter valideres!
Avatar billede dannv Nybegynder
04. november 2004 - 21:46 #5
<ole></bole>

Ovenstående giver ikke det korrekte resultat!!
Avatar billede roenving Novice
05. november 2004 - 02:05 #6
Avatar billede dannv Nybegynder
05. november 2004 - 06:26 #7
roenvig:

Det ligner noget af det rigtige, men dog mangler et vigtigt element: Validering på de enkelte tekst felter skal gøres afhængig af valget som er gjort i select'en..

psuedo kode:

for (antallet af elemener på siden)
{
  if(elementnavn='result_min' || 'result_max')
  {
    var nummer = result_min.substring(sidste index af '_', til længde af streng) //find det nummer feltet har fået af mig (navn = result_min_6)
    var type = find type fra select box, som har navn/id 'result_type'+nummer //(navn = result_type_6)

    if(type == 'numeric')
    {
      if(trim(e.value) != "") {
            if(isPositiveInteger(e.value)==false) {
                alert("Please fill a valid ... using '.' as decimal seperator");
                e.focus();
                return false;
            }
        }
    }
    return true;
  }
  return true;
}


-----------------------

Det var noget i den stil jeg havde forestillet mig, håber det er til at forstå!!!
Avatar billede dannv Nybegynder
08. november 2004 - 11:40 #8
Lukker og prøver igen en anden gang...
Avatar billede roenving Novice
08. november 2004 - 11:46 #9
Tjah, nu har jeg ikke været i nærheden af pc'en hele weekenden, så jeg har ikke haft lejlighed for at overveje dit problem !-)

-- men der kommer nok en chance senere eller i morgen, når jeg støder ind i det i min mailbox !o]
Avatar billede roenving Novice
09. november 2004 - 13:07 #10
Jeg ville selv tænke i at gøre det på denne måde:

function validate(f){
  var s = f.getElementsByTagName('SELECT'),val,id,flt;
  for(i=0;s.length>i;i++){
    val = +s[i].value;
    id = s[i].name.replace(/^\.*?(\d+)$/,"$1")
    flt = f.elements['resultat_min_'+id);
    if(+flt.value > val){
      alert('Værdien er mindre end minimum');
      flt.focus();
      return false;
    }
    flt = f.elements['resultat_max_'+id);
    if(+flt.value < val){
      alert('Værdien er større end maximum');
      flt.focus();
      return false;
    }
  }
  retrun true;
}
Avatar billede dannv Nybegynder
10. november 2004 - 10:17 #11
ok jeg kigger lige på det i aften og så vender jeg tilbage...
Avatar billede dannv Nybegynder
10. november 2004 - 13:06 #12
Der kommer diverse fejlmeddelser fra browser..!

Jeg har forsøgt at rette dem men ikke, med den store success! Der var  en stavefejl i return samt ikke-kantede paranteser
i linien flt = f.element....

Fejlen der meddeles er:
Linie 29
char 8
Error: Expected ';'
code: 0

function validateForm(f){
  var s[] = f.getElementsByTagName('SELECT'),val,id,flt;
  for(i=0;s.length>i;i++){
    val = +s[i].value;
    id = s[i].name.replace(/^\.*?(\d+)$/,"$1");
    flt = f.elements['resultat_min_'+id];
   
    if(+flt.value > val){
      alert('Værdien er mindre end minimum');
      flt.focus();
      return false;
    }
    flt = f.elements['resultat_max_'+id);
    if(+flt.value < val){
      alert('Værdien er større end maximum');
      flt.focus();
      return false;
    }
  }
  return false;
}

OBS: Det jeg skal teste på er om vædien af select-box er text eller numerisk
        Hvis det er numerisk, skal jeg sikre mig at der kun står tal i tekstfeltet.
        Det er underordnet om resultatet er imellem 2 værdier.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester