Modificați vizibilitatea etichetei ASP.NET cu JavaScript

Am o pagină ASP.NET cu un buton asp: care nu este vizibil. Nu pot fi vizibile cu JavaScript, deoarece nu este redat la pagină.

Ce pot face pentru a rezolva asta?

0
fr hi bn

7 răspunsuri

Incearca asta.

Nu utilizați codul de pe server pentru a face acest lucru, deoarece ar necesita o postback. În loc să utilizați vizibilitatea = "false", puteți seta o proprietate CSS care ascunde butonul. Apoi, în javascript, comutați proprietatea înapoi ori de câte ori doriți să afișați din nou butonul.

ClientID este utilizat deoarece poate fi diferit de ID-ul serverului dacă butonul se află în interiorul unui control al numelui rezervorului. Acestea includ panouri de diferite tipuri.

0
adăugat

Dacă aveți nevoie să o manipulați pe partea clientului, nu puteți utiliza proprietatea Visible pe partea de server. În schimb, setați stilul de afișare CSS la "none". De exemplu:

Apoi, puteți face vizibil pe partea clientului cu:

document.getElementById('Label1').style.display = 'inherit';

Ați putea să-l ascundeți din nou cu:

document.getElementById('Label1').style.display = 'none';

Rețineți că pot apărea probleme cu faptul că ID-ul clientului este mai complex decât "Label1" în practică. Va trebui să utilizați ID-ul clientului cu getElementById, nu ID-ul de pe server, dacă acestea diferă.

0
adăugat

Asigurați-vă că proprietatea Visible este setată la true sau controlul nu va fi afișat în pagină. Apoi puteți folosi scriptul pentru a manipula acest lucru.

0
adăugat

Dacă așteptați până când pagina este încărcată și apoi setați afișajul butonului la nici unul, ar trebui să funcționeze. Apoi, o puteți face vizibilă la un moment ulterior.

0
adăugat

Trebuie să fiți atenți la XSS atunci când faceți astfel de lucruri:

document.getElementById('<%= Label1.ClientID %>').style.display

The chances are that no-one will be able to tamper with the ClientID of Label1 in this instance, but just to be on the safe side you might want pass it's value through one of the AntiXss library's methods:

document.getElementById('<%= AntiXss.JavaScriptEncode(Label1.ClientID) %>').style.display
0
adăugat

Continuând cu ceea ce Dave Ward a spus:

  • Nu puteți seta proprietatea Vizibilă la valoarea false deoarece controlul nu va fi redat.
  • Ar trebui să utilizați proprietatea Stil pentru a seta afișarea la none .

Design de pagină/control


Cod în spatele

Undeva în secțiunea de încărcare:

Label label1 = (Label)FindControl("Label1");
((Label)FindControl("Button1")).OnClientClick = "ToggleVisibility('" + label1.ClientID + "')";

Fișier Javascript

function ToggleVisibility(elementID)
{
    var element = document.getElementByID(elementID);

    if (element.style.display = 'none')
    {
        element.style.display = 'inherit';
    }
    else
    {
        element.style.display = 'none';
    }
}

Desigur, dacă nu doriți să comutați, ci doar să afișați butonul/eticheta, atunci ajustați corespunzător metoda javascript.

Punctul important aici este că trebuie să trimiteți informațiile despre codul ClientID al controlului pe care doriți să îl manipulați pe partea clientului în fișierul javascript, fie setând variabile globale, fie printr-un parametru de funcții ca în exemplu.

0
adăugat

Acesta este cel mai simplu mod pe care l-am găsit:

        BtnUpload.Style.Add("display", "none");
        FileUploader.Style.Add("display", "none");
        BtnAccept.Style.Add("display", "inherit");
        BtnClear.Style.Add("display", "inherit");

Am altfel în El, așa că se ocupă și de afișarea lor. Acest lucru poate să apară în încărcarea paginii sau într-o metodă de reîmprospătare a comenzilor de pe pagină.

0
adăugat
JavaScript, România - Moldova
JavaScript, România - Moldova
328 participanți

Comunitatea Română JavaScript: github.com/js-ro Pentru confort, opriți notificările. Parteneri: @node_ro, @php_ro, @python_ro, @seo_ro, @RomaniaGroup, @ai_ro, @Grupuri_IT Offtop: @holywars_ro Joburi: @js_jobs_ro Sponsored with ❤️ by ciupacabra.com