simone: regular expression + ie

hallo,

mein ziel ist es bei formularfelder die den gleichen namen haben, einen davon mit javascript umzubennen. nun habe ich folgendes script geschrieben, aber leider stimmt was mit der regular expression nicht. ich hoffe mir kann dabei jemand weiterhelfen:

objform = document.forms["frmPage"];
formfields = objform.getElementsByTagName("input");
doc = document.forms[0].innerHTML;
doc = String(doc);

for (var i=0;i<formfields.length;i++)
{
 if(formfields[i].type == "text")
 {
  fieldname = formfields[i].name;

pattern = '(<input(.*?) name=.' + fieldname + '(.*?))+';
  reg = new RegExp(pattern,"gim");

objMatch = reg.exec(doc);

if(objMatch != null)
  {
   if(objMatch.length > 1)
   {
    formfields[i].disabled = true;
    formfields[i].name = "notValid";
    break;
   }
  }
 }
}

  1. Hallo,

    den regulären Ausdruck habe ich mir noch gar nicht angeschaut, aber Folgendes fiel mir sofort auf:
    Warum hast Du denn diesen umständlichen Ansatz mit dem innerHTML des FORM-Elements gewählt?
    Du hast Dir doch schon eine Kollektion aller INPUT-Elemente geholt. Diese enthält doch alle Informationen, die Du benötigst.
    Du mußt doch für jedes INPUT-Element einfach nur schauen, ob es noch ein anderes mit genau demselben Namen gibt. Und dafür benötigst Du nicht einmal einen regulären Ausdruck.
    Hoffe, das hilft Dir weiter.

    Ciao,
    Andreas

    --
    "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)
    1. Hallo,

      hatte ich mir auch zuerst überlegt. Aber dann müsste ich für jedes Input-Feld eine neue Schleife durch alle Inputfelder machen, oder ?! Deshalb dachte ich an einen regulären Ausdruck.

      Vg,
      Simone

      Hallo,

      den regulären Ausdruck habe ich mir noch gar nicht angeschaut, aber Folgendes fiel mir sofort auf:
      Warum hast Du denn diesen umständlichen Ansatz mit dem innerHTML des FORM-Elements gewählt?
      Du hast Dir doch schon eine Kollektion aller INPUT-Elemente geholt. Diese enthält doch alle Informationen, die Du benötigst.
      Du mußt doch für jedes INPUT-Element einfach nur schauen, ob es noch ein anderes mit genau demselben Namen gibt. Und dafür benötigst Du nicht einmal einen regulären Ausdruck.
      Hoffe, das hilft Dir weiter.

      Ciao,
      Andreas

      1. Hallo,

        Hallo,

        hatte ich mir auch zuerst überlegt. Aber dann müsste ich für jedes Input-Feld eine neue Schleife durch alle Inputfelder machen, oder ?!

        ja, schon, aber das ist wahrscheinlich trotzdem schneller. In jedem Fall ist es aber einfacher.
        Noch ein Tip: Du kannst Dir die document-Methode getElementsByName() (http://de.selfhtml.org/javascript/objekte/document.htm#get_elements_by_name) zunutze machen, um das Ganze noch ein wenig zu vereinfachen.

        Ciao,
        Andreas

        --
        "Das Corporate Design für das Internet sieht eine Reihe von Grafikelementen vor, die die Optik der Webseite visuell und funktionell beeinflussen." - (Zitat aus dem "Styleguide Corporate Design"  eines großen Konzerns...)