Bernd: Auf einen bestimmten Inhalt prüfen?

Hallo,

warum funktioniert mein jQuery Code nicht?
https://jsfiddle.net/m1v3yptv/2/

Ich möchte erreichen wenn in einem DIV "Bitte wählen ...." steht, soll der submit-Button auf disabled stehen. Wenn etwas anderes darin steht, soll das disabled gelöscht werden.

  1. Tach!

    warum funktioniert mein jQuery Code nicht?
    if ($(".test:contains('Bitte wählen ....')")) {

    Das contains ist ein Selector. Der Funktionsaufruf liefert nicht true oder false, sondern ein jQuery-Objekt, das alle gefundenen Elemente repräsentiert. Dieses jQuery-Objekt ist immer truthy, egal ob gefüllt oder nicht.

    Du musst dir für dein Ziel den Inhalt nehmen und dann einen String-Vergleich durchführen. Oder aber du ermittelst die Anzahl der gefundenen Elemente mit der length-Eigenschaft des jQuery-Objekts und prüfst die auf 0 oder 1. Ich würde den Stringvergleich nehmen, und auch eine ID statt einer Klasse, denn es soll ja ein bestimmtes Element geprüft werden und nicht mehrere.

    dedlfix.

    1. Hallo,

      danke für deine Antwort. Ich habe es umgebaut und es funktioniert:
      https://jsfiddle.net/m1v3yptv/3/

  2. @@Bernd

    Ich möchte erreichen wenn in einem DIV "Bitte wählen ...." steht,

    Wieso sollte in einem div „Bitte wählen …“ stehen?

    Wenn etwas anderes darin steht,

    Und wie sollte etwas anderes da reinkommen?

    Mir scheint, du missbrauchst div für input.

    Was willst du eigentlich erreichen?

    LLAP 🖖

    --
    “When UX doesn’t consider all users, shouldn’t it be known as ‘Some User Experience’ or... SUX? #a11y” —Billy Gregory
    1. Hallo,

      Was willst du eigentlich erreichen?

      ich möchte gerne mein Chosen behalten:
      https://forum.selfhtml.org/self/2018/jan/16/chosen-required/1712130#m1712130

      Da ich dieses leider nicht auf required setzten kann, da Chosen ein DIV aus meinem select macht muss ich mir anderes behelfen um ein Pflichtfeld draus zu machen. Da sah ich diese Option als winzigste Option.

      1. Hallo Bernd,

        ich möchte gerne mein Chosen behalten:
        https://forum.selfhtml.org/self/2018/jan/16/chosen-required/1712130#m1712130

        Und warum bleibst du dann nicht in jenem Thread??

        Bis demnächst
        Matthias

        --
        Rosen sind rot.
        1. Weil das eine hat mit dem anderen nur indirekt etwas zu tun. So etwas kann man auch für andere Bereiche einsetzten. Gunnar wollte wissen für was ich dieses nutzen möchte und wie das Bitte wählen ... in das DIV kommt.

          1. Hallo Bernd,

            darf ich Dir noch einen Vorschlag machen? Folgende Codeblöcke tun das gleiche:

            // Umständliche Version, schlecht lesbar wegen aussagelosem Variablennamen "h"
            h = $("#test").text();  
            
            if(h == 'Bitte wählen ....') {
            	$( "#insert" ).prop("disabled", true);
            } else {
            	$( "#insert" ).prop("disabled", false);
            }
            

            Würdest Du jemandem folgende Erklärung geben? "Wenn Du eine rote Karte hast, lege die rote Karte in den Kasten. Wenn Du eine grüne Karte hast, lege die grüne Karte in den Kasten". Würdest du nicht eher sagen: "Lege deine Karte in den Kasten"? Die Karte ist das Ergebnis der Bedingung, der Kasten ist eine Variable oder der 2. Parameter für prop(). Also:

            // Kompakter und besser lesbar wegen beschreibender Variablennamen
            var selectedText = $("#text").text();
            var isDefault = (selectedText == 'Bitte wählen ....');
            $("#insert").prop("disabled", isDefault);
            
            // Einzeiler ohne Temp-Variablen
            $("#insert").prop("disabled", $("#text").text() == 'Bitte wählen ....');
            

            Rolf

            --
            sumpsi - posui - clusi