Chris Ross: OnBlur vor onFocus ???

Beitrag lesen

Hi Struppi,

Mit dem alert entziehst du dem Element den Focus. D.h. in dem Moment wo du ein Element Fokusierst rufst du gleichzeitig den Blur event auf. Das unterschiedliche Verhalten erklärt sich aus den unrterschiedlichen Bubbling Strategien der Browser.

Stimmt! In dem Moment, wo eine Meldung (alert) kommt, ist der Focus weg. Das ist mir aufgefallen, als ich zwischen dem browser und dem editor hin und her schaltete. Als das Browserfenster wieder aufgerufen wurde, kam plötzlich der alert, obwohl ich nichts gemacht hatte - ausser, dass beim Umschalten zu Editor der Focus verloren ging.

Naja - jetzt hab ich wenigstens eine Erklärung für das (richtige) Verhalten.

Ich habs jetzt anders gelöst:

  
  function chkSelect(s, z) {  
   if(document.getElementsByName(s)[0].selectedIndex != 0) {  
    document.getElementsByName(z)[0].value = '';  
    document.getElementsByName(z)[0].disabled = true;  
    return;  
   }  
   else {  
    document.getElementsByName(z)[0].disabled = false;  
    return;  
   }  
  }  
  
  function chkInput(s, z, wert) {  
   if(wert != '') {  
    document.getElementsByName(s)[0].disabled = true;  
    return;  
   }  
   else {  
    document.getElementsByName(s)[0].disabled = false;  
    document.getElementsByName(z)[0].disabled = false;  
    return;  
   }  
  }  

und im html:

  
  <tr>  
   <td style="background-color:#FFFFFF;">02  
    <select name="s2" size="1" style="width:12em;" style="padding-left:20px;" onChange="chkSelect('s2','z1')">  
         <option> </option>  
{$data['s2']}    </select>  
   </td>  
   <td style="background-color:#FFFFFF;">11  
    <select name="n2" size="1" style="width:12em;" style="padding-left:20px;" onChange="chkSelect('n2','z2')">  
         <option> </option>  
{$data['n2']}    </select>  
   </td>  
  </tr>  
  <tr>  
   <td style="background-color:#FFFFFF;">  
    03&nbsp;<input type="text" name="z1" style="width:12em;" maxlenght="63" value="{$data['alt']['z1']}" onChange="chkInput('s2','z1', this.value)">  
   </td>  
   <td style="background-color:#FFFFFF;">  
    12&nbsp;<input type="text" name="z2" style="width:12em;" maxlenght="63" value="{$data['alt']['z2']}" onChange="chkInput('n2','z2', this.value)">  
   </td>  
  </tr>  

So funktioniert es auch. :)

Danke für Eure Hilfe!

MfG
Chris Ross