Gunnar Bittersmann: required setzten

Beitrag lesen

problematische Seite

@@Google weiß alles

<script type="text/javascript">

BTW, type="text/javascript" ist in HTML5 unnötig.

// wenn das Dokument geladen wird führe aus:
window.onload=function () {

Zu spät. Es muss nicht gewartet werden, bis das gesamte Dokument (inclusive aller eingebetteter Ressourcen wie Bilder, Webfonts, …) geladen ist. Das passende Event ist DOMContentLoaded. Von der Notation mit on… sollte man sowieso Abstand nehmen und addEventHandler() verwenden.

Das kann man sich aber sparen, wenn das Script dort plaziert wird, wo es stehen sollte: nicht im head, sondern am Ende des body.

    // binde die Funktion requireMail() an das Ereignis change für die Objekte:
    document.getElementById('wechselYes').onchange=function () { requireMail(); }
    document.getElementById('wechselNo').onchange=function ()  { requireMail(); }

Elegant könnte man den Eventhandler für ein Vorfahrenelement registrieren und event delegation nutzen.

function requireMail() {
    var obj=document.getElementById('mailadresse');

Es war gewünscht, auch für mehrere Eingabefelder auf einmal required zu setzen bzw. zu löschen. Diese müsste man entsprechend im Markup kennzeichnen und im Script mit einer Schleife durchlaufen.

    if (document.getElementById('wechselYes').checked) {
        obj.required=true;           // Eingabe benötigt
        obj.disabled=false;          // Eingabe erlauben
        //obj.style.display='inline';  // anzeigen
    } else {
        obj.required=false; // Eingabe nicht benötigt
        obj.value=''        // Eingaben löschen
        obj.disabled=true;  // Eingabe verbieten
        //obj.style.display='none';  // Nicht mehr anzeigen
    }

Es war lediglich gewünscht, Felder (nicht) als Pflichtfelder vorzusehen; nicht, in diesen Feldern Eingaben zu verbieten oder gar bereits getätigte Eingaben zu löschen.

Dann ist auch keine if-Abfrage nötig. Der boolesche Wert ist ja gerade derjenige, den man required zuweisen möchte:

obj.required = document.getElementById('wechselYes').checked;

(Entsprechend ginge auch obj.disabled = !document.getElementById('wechselYes').checked;

Und verbergen sollte man das auch nicht per JavaScript (style.display), sondern die bereits im DOM vorhande Information per Stylesheet nutzen: [disabled] { display: none }.)

Die Information, ob required oder nicht, könnte man auch per Stylesheet nutzen und bspw. * bei Pflichtfeldern anzeigen. Ich hab da mal was gebastelt.

(Ich weiß, dass man den Data-URI prozent-codieren müsste, damit das auch im IE funktioniert. Hab ich mir hier mal gespart.)

Eine Frage hab ich dazu aber: Warum kann man statt

document.querySelector("fieldset").addEventListener('click', function ()
{
	requiredOnRequestElements.setRequired();
});

nicht einfach

document.querySelector("fieldset").addEventListener('click', requiredOnRequestElements.setRequired);

schreiben? @Orlok? @1unitedpower?

LLAP 🖖

--
“You might believe there are benefits for the developer, but first of all, you should put those behind the interest of the user.” —Stefan Tilkov
Selfcode: sh:) fo:} ch:? rl:) br:> n4:& va:| de:> zu:} fl:{ ss:| ls:# js:|
0 55

required setzten

André
  • html
  1. 0
    Google weiß alles
    1. 2
      Gunnar Bittersmann
      • javascript
      1. 0
        Matthias Apsel
      2. 1
        dedlfix
      3. 0
        Google weiß alles
        • javascript
        • meinung
        1. 0
          Der Martin
      4. 1
        Orlok
        • dom
        • javascript
        1. 0
          Gunnar Bittersmann
          • javascript
    2. 0

      Geht auch mit viel weniger Code!

      André
      • javascript
      • jquery
      1. 0

        "Weniger" ist manchmal "mehr", manchmal "viel mehr", machmal "viel zu viel"

        Google weiß alles
        1. 0
          André
          1. 0
            Google weiß alles
            1. 0
              André
              1. 0
                Google weiß alles
                • menschelei
          2. 3

            jQuery

            Orlok
            1. 0
              Mitleser
      2. 0
        Wie krass bist Du denn drauf?
        1. 0
          Der Martin
      3. 0
        Gunnar Bittersmann
        1. 0
          André
          1. 1
            Wie krass bist Du denn drauf?
            1. 0
              André
              1. 0
                Wie krass bist Du denn drauf?
                1. 0
                  André
                  1. 0
                    Wie krass bist Du denn drauf?
                    • menschelei
                    1. 0
                      André
                      1. 1
                        Wie krass bist Du denn drauf?
                        1. 0

                          Tut mir leid, war falsch.

                          Wie krass bin ich denn heute drauf?
  2. 0
    André
    1. 0
      Google weiß alles
      • barrierefreiheit
      1. 0
        André
        • html
        1. 1
          Google weiß alles
          1. 0
            André
            1. 1
              Google weiß alles
            2. 0
              Gunnar Bittersmann
        2. 0
          Der Martin
          • html
          • zu diesem forum
          1. 0
            André
            1. 0
              Der Martin
              1. 1
                Google weiß alles
            2. 2
              Google weiß alles
              1. 0
                André
                1. 0
                  Tabellenkalk
                  1. 0
                    André
                    1. 0
                      Der Martin
                    2. 0
                      Tabellenkalk
                      1. 0
                        André
                        1. 0
                          Tabellenkalk
                          1. 0
                            Gunnar Bittersmann
                            1. 0
                              Tabellenkalk
                            2. 0
                              Matthias Apsel
                2. 0
                  Google weiß alles
                  • menschelei
                  1. 0
                    André
                    1. 0
                      Google weiß alles
    2. 0
      Gunnar Bittersmann
      • zu diesem forum