Mit Javascript versteckte Textbox wird sichtbar, wenn andere Ereignisse auftreten

Wenn ein Dropdown-Wert geändert wird (von ddlSource), habe ich Javascript, das einige Textfelder ausblenden wird, was gut funktioniert. Als nächstes, wenn der Benutzer einen bestimmten Wert in einem anderen Textfeld eingibt, habe ich einen Ajax-Aufruf, um einige Etiketten zu füllen. Nach diesem Ajax-Aufruf beim Laden des Formulars sind die ausgeblendeten Textfelder jetzt sichtbar. Wo bin ich falsch gelaufen?



    
    
    


und mein Javascript für aktiviert ist

function DisableEnable() {
    var DropDown_Source = document.getElementById("<%= ddlSource.ClientID %>")

    if (DropDown_Source.options[DropDown_Source.selectedIndex].text == "y") {

        document.getElementById('txtSupplementNbr').style.visibility = 'visible';
        document.getElementById("txtDelDate").style.visibility = 'visible';
        document.getElementById('lblSupplementNbr').style.display = '';
        document.getElementById('lblDelDate').style.display = '';
    }

    else {
        document.getElementById("txtSupplementNbr").style.visibility = 'hidden';
        document.getElementById("txtDelDate").style.visibility = 'hidden';
        document.getElementById('lblSupplementNbr').style.display = 'none';
        document.getElementById('lblDelDate').style.display = 'none';
    }
}

Das Textfeld, das den Ajax anruft


    
        
    

Nachdem es die Funktion OnTextChanged() ausgeführt hat, sehe ich alle Steuerelemente, die zuvor ausgeblendet wurden. Jede Hilfe wäre willkommen.

0
Können wir den Code für Ihre GetCaseSummaryCivilPlaintiffInfo -Funktion sehen?
hinzugefügt der Autor Lopsided, Quelle

2 Antworten

Der HTML-Code wird aufgrund einer AJAX-Anforderung in den Ausgangszustand zurückübertragen. Rufen Sie DisableEnable() auf AJAX-Anforderung auf endet mit Sys.WebForms.PageRequestManager endRequest Event um den Status von Formularelementen zu aktualisieren.

Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
     DisableEnable();
}

Sie können auch alle Steuerelemente, die sich im Update-Panel ändern, so einstellen, dass ihr Zustand von AJAX zwischen AJAX-Anrufen beibehalten wird.

0
hinzugefügt
Es gibt nur Textfeld im Update-Panel und es bedeutet keine Änderungen in den genannten Objekten, etwas verwirrend.
hinzugefügt der Autor Adil, Quelle
Korrigiere mich, wenn ich falsch liege, aber würde das Update-Panel nicht nur Elemente in der Inhaltsvorlage neu rendern? Wenn ich sie früher benutzt habe (obwohl ich inzwischen JavaScript-Ajax-Aufrufe verwendet habe), mussten nur meine Javascript-Variablen, die Elemente in den Update-Panels referenzierten, im endRequest-Event neu definiert werden.
hinzugefügt der Autor Lopsided, Quelle
Das sind meine Gedanken genau. Ich glaube, das Problem könnte ein Fehler in seiner GetCaseSummaryCivilPlaintiffInfo -Funktion sein. Der Hauptunterschied, den ich sehe, ist das Weglassen des () nach der JavaScript-Funktion, aber ich kann mich nicht erinnern, ob dies Code-breaking ist. Ich bat ihn, diese Funktion nur für den Fall zu veröffentlichen.
hinzugefügt der Autor Lopsided, Quelle

Sie sollten nicht mit Sichtbarkeit und Anzeige in Ihrer Umschaltfunktion umgehen müssen. Der Hauptunterschied besteht darin, dass die Sichtbarkeit das Element verbirgt, aber seine Position beibehält, um es loszuwerden. Anzeigewert sollte für Sie gut funktionieren. Hier ist auch ein einfacheres Display-Toggling-Skript, übergeben Sie ein Objekt und es wird überprüft, ob es bereits angezeigt wird oder nicht.

function toggle(obj) {
    var el = document.getElementById(obj);
    if ( el.style.display != 'none' ) {
        el.style.display = 'none';
    }
    else {
        el.style.display = '';
    }
}

Jetzt wollen Sie nur sicherstellen, dass dies nur dann aufgerufen wird, wenn Sie es möchten, und onchange wird weiterhin die Anzeige umschalten. Ich glaube @ Adils Antwort wird diesen Teil Ihrer Frage verwalten.

0
hinzugefügt
JavaScript - Deutsche Gemeinschaft
JavaScript - Deutsche Gemeinschaft
3 der Teilnehmer

In dieser Gruppe sprechen wir über JavaScript.