Avatar billede Calle5463 Forsker
06. april 2012 - 16:25 Der er 5 kommentarer og
1 løsning

Toggle button or not

Jeg har nedenstående kode (fra en eksperten.dk bruger) som virker fint på felter med tagname "input". Men det virker ikke på "textarea", som jo så åbenbart ikke har tagname "input". Og det er nogenlunde så langt min kunnen rækker. Hvad gør jeg lige for at det også virker på "textarea"?


var formOldValues = new Array();

function enableValidation()
{
  var myForm = document.getElementById("karin");
  var fields = karin.getElementsByTagName("input");  // virker ikke med textarea !!
  for (var i = 0; i < fields.length; i++)
  {
    var field = fields.item(i);
    if (field.className.indexOf("NoValidate") < 0)

    {
      field.onkeyup = function () { toggleButtons(this); };
      formOldValues[field.name] = field.value;
    }
  }
}

function toggleButtons(caller)
{
  if (formOldValues[caller.name] != caller.value)
  {
    var myButtons = document.getElementById("FormButtons");
    myButtons.style.display = "";
  }
}
Avatar billede mireigi Novice
06. april 2012 - 17:50 #1
Nå, jeg kan da lige hjælpe dig med min egen kode :)

var formOldValues = new Array();

function enableValidation()
{
    var myForm = document.getElementById("karin");
    var fieldTypes = ["input", "textarea"];

    for (var j = 0; j < fieldTypes.length; j++)
    {
        var fields = myForm.getElementsByTagName(fieldTypes[j]);
        for (var i = 0; i < fields.length; i++)
        {
            var field = fields.item(i);
            if (field.className.indexOf("NoValidate") < 0)
            {
                field.onkeyup = function () { toggleButtons(this); };
                formOldValues[field.name] = field.value;
            }
        }
    }
}

function toggleButtons(caller)
{
    if (formOldValues[caller.name] != caller.value)
    {
        var myButtons = document.getElementById("FormButtons");
        myButtons.style.display = "";
    }
}


Så kan du bruge flere typer ved at angive dem i arrayet fieldTypes.
Avatar billede mireigi Novice
06. april 2012 - 17:50 #2
Nå, jeg kan da lige hjælpe dig med min egen kode :)

var formOldValues = new Array();

function enableValidation()
{
    var myForm = document.getElementById("karin");
    var fieldTypes = ["input", "textarea"];

    for (var j = 0; j < fieldTypes.length; j++)
    {
        var fields = myForm.getElementsByTagName(fieldTypes[j]);
        for (var i = 0; i < fields.length; i++)
        {
            var field = fields.item(i);
            if (field.className.indexOf("NoValidate") < 0)
            {
                field.onkeyup = function () { toggleButtons(this); };
                formOldValues[field.name] = field.value;
            }
        }
    }
}

function toggleButtons(caller)
{
    if (formOldValues[caller.name] != caller.value)
    {
        var myButtons = document.getElementById("FormButtons");
        myButtons.style.display = "";
    }
}


Så kan du bruge flere typer ved at angive dem i arrayet fieldTypes.
Avatar billede Calle5463 Forsker
06. april 2012 - 18:14 #3
Takker - og det virker  :-). Du (ku' ikk' lige huske dit brugernavn da jeg spurgte) smider lige et svar
Avatar billede mireigi Novice
06. april 2012 - 18:18 #4
Det var så lidt :)
Avatar billede olebole Juniormester
07. april 2012 - 01:16 #5
<ole>

Mon ikke dette ville være fiksere:

function enableValidation() {
    var myForm = document.getElementById("karin");
    var fieldTypes = ["input", "textarea"];

    for (var i=0,j=fieldTypes.length; i<j; i++) {
        var fields = myForm.getElementsByTagName(fieldTypes[i]);
        for (var m=0,n=fields.length; m<n; m++) {
            var field = fields.item(m);
            if (field.className.indexOf("NoValidate") < 0) {
                field.onkeyup = toggleButtons;
            }
        }
    }
}

function toggleButtons(caller) {
    if (this.defaultValue != this.value) {
        var myButtons = document.getElementById("FormButtons");
        myButtons.style.display = "";
    }
}

/mvh
</bole>
Avatar billede Calle5463 Forsker
07. april 2012 - 09:50 #6
- det kan du bilde mig ind. Det lidt som uld-jysk for mig. Bedst som jeg tror jeg forstår det, så forstår jeg pludselig ingenting.

Jeg har i øvrigt brugt onchange i stedet for onkeyup - nogen specielle (sikkerhedsmæssige/funktionelle) grunde til onkeyup?

Min side udvikler sig ved knopskydning = opdager ny mulighed => det må jeg have.

På et tidspunkt tænker jeg ovenstående skal ændres, så knappen dukker op ud for det felt der er ændret - jeg har flere form's på min side. Men lige nu kan jeg leve med at kopiere ovenstående så der er en per form.
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