Ergebnis 1 bis 9 von 9
  1. #1
    chpo7234 ist offline Jungspund
    registriert
    06-10-2015
    Beiträge
    22

    Problem: Selectbox-Inhalt überprüfen

    Hallo Leute,

    auf meinem Ubuntu-Testsystem mit Firefox hatte ich keine Probleme. Nun wurden meine Scripte mal auf den Webserver geladen. Wenn ich die Seite nun aufrufe, denn wird mir in der Fehlerkonsole angezeigt, dass es die Methode "contains()" nicht gibt. Es handelt sich um die zweite If-Abfrage aus folgendem Code(Zeile 4):

    Code:
    function changeTboxSnmpCom(){
      $(document).ready(function(){
        if (document.getElementById("agenttype")){
          if (!$("#agenttype").val().contains("SNMP")) {
            /* Clears the textbox: */
            $("#snmpCom").val("");
            /* Locks the textbox */
            $("#snmpCom").prop("readonly",true);
          }
          else {
            /* Unlock the textbox */
            $("#snmpCom").prop("readonly",false);
          }
        }
      });
    }
    Ich habe im Moment keinen Zugriff auf den Webserver. Im Testsystem funktioniert aber auch folgende Abfrage:
    Code:
    if (!$("#agenttype").val().indexOf("SNMP")>-1) {
    /**/ }
    Woran kann es liegen, dass die "contains()"-Methode im Testsystem aber nicht im Live-System erkannt wird?

    Und könnte ich mit der indexOf()-Alternative Abhilfe schaffen?

    MfG

  2. #2
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.933

    AW: Problem: Selectbox-Inhalt überprüfen

    Sieht nach jQuery aus. Wie wird das denn geladen? Vlt. fehlt das auf dem Webserver einfach. Was sagt die F12 Konsole des Browsers denn dazu?
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

  3. #3
    chpo7234 ist offline Jungspund
    registriert
    06-10-2015
    Beiträge
    22

    AW: Problem: Selectbox-Inhalt überprüfen

    Danke für deine Antwort, mikdoe.

    jQuery ist auf dem Live-Server mit eingebunden und wird auch verwendet. Geladen wird es im Header-Bereich durch <script src="javascript/jquery-laters.js" type="text/javascript"></script>

    Die Entwicklerkonsole von Chrome spuckt folgendes aus:

    Code:
    Uncaught TypeError: $(...).val(...).contains is not a function
    (anonymous function) @ hostSettings.js:6
    fire @ jquery-latest.js:3119
    self.add @ jquery-latest.js:3165
    jQuery.fn.ready @ jquery-latest.js:3399
    changeTboxSnmpCom @ hostSettings.js:4
    onload @ hostSettings.php:9
    Mit der Meldung "Anonyme Funktion im Script hostSettings.js Zeile 6" ist genau die Zeile mit der if-Abfrage und der contains()-Methode angesprochen. Contains() wird dabei rot unterstrichen. In der Testumgebung habe ich exakt die gleiche jQuery-Datei verwendet - dort funktioniert auch alles.. In anderen Scripten gibt es auf dem Live-Server keine Probleme mit jQuery.

    MfG
    Geändert von mikdoe (14-01-2016 um 11:32 Uhr) Grund: Code Tags

  4. #4
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.933

    AW: Problem: Selectbox-Inhalt überprüfen

    Gibt es denn $("#agenttype").val() zu diesem Zeitpunkt schon/noch im DOM oder ist diese ID (noch) nicht vorhanden? Obwohl mich dann wundern würde, dass ein jQuery Kommando eine Fehlermeldung wirft. Das tut es nämlich in älteren Versionen nicht.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

  5. #5
    chpo7234 ist offline Jungspund
    registriert
    06-10-2015
    Beiträge
    22

    AW: Problem: Selectbox-Inhalt überprüfen

    Sorry für die Code-Tags und danke noch mal für die Antwort/den Tipp.

    Ich habe in meinem Code tatsächlich noch etwas ungewöhnliches gefunden.

    Im HTML-Body habe ich die Methode direkt mittels onload-Event aufgerufen:
    Code:
    <body onload="changeTboxSnmpCom();">
    Erst irgendwann später im Code wird die Selectbox denn fest gelegt.

    Mein Ziel war es, nach dem Erstellen der SelectBox die aktuelle Auswahl zu überprüfen und daraufhin bestimmte Ereignisse auszulösen.
    Ich habe jetzt folgenden Code unterhalb der SelectBox eingesetzt
    Code:
    <?php echo "<script type=\"text/javascript\">changeTboxSnmpCom();></script>";
    Ich hoffe dass es nun so später im Live-System funktioniert.

    MfG
    Geändert von chpo7234 (14-01-2016 um 13:18 Uhr)

  6. #6
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.933

    AW: Problem: Selectbox-Inhalt überprüfen

    ja man scripte auch im body starten. wichtig ist immer die zeitliche reihenfolge der elemente im DOM.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

  7. #7
    chpo7234 ist offline Jungspund
    registriert
    06-10-2015
    Beiträge
    22

    AW: Problem: Selectbox-Inhalt überprüfen

    Ok, mittlerweile hat sich heraus gestellt, dass es hier Konflikte mit der Browserkompatibilät gibt..... Im Firefox wird die Funktion normal ausgeführt, bei Chrome oder IE kommt es hier zur Fehlermeldung.

    Die contains()-Methode wurde wohl irgendwann von includes() ersetzt.
    javascript - string.contains() doesn&#39;t exist while working in chrome - Stack Overflow

    MfG

  8. #8
    Avatar von mikdoe
    mikdoe ist offline Administrator
    registriert
    01-05-2010
    Beiträge
    7.933

    AW: Problem: Selectbox-Inhalt überprüfen

    Ja ja, das ewige Leid mit den Browsern.
    Ich sehe aber auch jetzt erst nach ganz genauem Lesen, dass du unterschiedliche Browser für lokal und live verwendet hast. Sowas sollte man immer vermeiden. Ich arbeite immer in einem einzigen Browser (IE11) sowohl live als auch lokal. Und den anschließenden Cross-Browser Test mache ich dann live mit allen anderen Browsern.
    Das deutsche Javascript Forum http://forum.jswelt.de http://forum.jswelt.de/images/logoJsWeltForumV4_32x22.png

  9. #9
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.757

    AW: Problem: Selectbox-Inhalt überprüfen

    Ich würde langfristig auf STRING.includes() setzten, da das im ECMA6 drin ist und contains nicht. Aber aus Rückwärtskompatibilitätsgründen würde ich zur Zeit auf jeden Fall mit der .indexOf !== -1 Variante arbeiten.

    Du könntest aber natürlich auch mit einem Polyfill arbeiten:
    Code:
    if (!String.prototype.includes){
    	String.prototype.includes = function includes(searchString/*, searchPosition*/){
    		var searchPosition;
    		if (arguments.length > 1){
    			searchPosition = arguments[1];
    		}
    		else {
    			searchPosition = 0;
    		}
    		return this.indexOf(searchString) >= searchPosition;
    	};
    }

Ähnliche Themen

  1. uploadfeld auf inhalt überprüfen
    Von asd im Forum JavaScript
    Antworten: 10
    Letzter Beitrag: 04-04-2013, 20:56
  2. Antworten: 2
    Letzter Beitrag: 24-09-2009, 13:01
  3. Über Selectbox Inhalt einer Seite Ändern
    Von speedyspin im Forum JavaScript
    Antworten: 7
    Letzter Beitrag: 05-01-2008, 22:56
  4. Inhalt von Selectbox in Textarea einfügen
    Von R1ddl3r im Forum JavaScript
    Antworten: 5
    Letzter Beitrag: 14-02-2006, 15:03
  5. Css problem bei Selectbox
    Von MasterD im Forum Allgemeines
    Antworten: 4
    Letzter Beitrag: 05-10-2001, 21:02

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •