Thomas Schenkeli: Datenkonsistenzprüfung beim Verlassen eines input-feldes

Beitrag lesen

Hallo,

Hallo Mathias

Du kannst das, wenn du unbedingt willst, umgehen, indem du focus etwas verzögert aufrufst. Gecko fällt der Zusammenhang zwischen blur und focus dann nicht mehr auf:

function onload () {

document.getElementById("feld1").onblur = test;
}
function test () {
if (this.value != '' || isNaN(this.value)) {
  this.onblur = null;
  alert("Fehler!");
  var elem = this;
  window.setTimeout(function () {
   elem.focus();
   elem.select();
   elem.onblur = test;
  }, 1);
}
}


>   
> ~~~html

<form action="">  

> <input type="text" name="feld1" id="feld1">  
> <input type="text" name="feld2">  
> </form>

ich hab meinen Code jetzt nur sehr, sehr geringfügig verändert:

function isNumber(inputField, alertMsg)
{

[...Zusätzliche Überprüfungen ...]

if((inputField.value == '') || !isNaN(inputField.value))
  {
    return true;
  }
  else
  {
    alert(alertMsg);

window.setTimeout(function () {

try
      {
        inputField.focus();
        inputField.select();
      }
      catch (e) {}

}, 1);
    return false;
  }
}

Das reicht schon aus damit das Ganze auch unter Firefox funktioniert. Könnten sich durch meine Abänderungen (bzw. starken vereinfachungen) irgendwelche Probleme ergeben die ich jetzt noch nicht bedacht habe, bzw. wozu das  Erstellen einer neuen Kopie des Inputelements und das Löschen und wieder anlegen der onBlur-Funktion?

Mathias

Danke und liebe Grüße

Thomas