3.939 messaggi dal 28 gennaio 2003
Lato client, ho la necessità di raggiungere il messaggio di errore provocato da un <asp:RequiredFieldValidator.

Certo, guardando l'html si vede una cosa del genere:

<span id="body_RequiredFieldValidator1"

Ecco, si può ricavare questo id in maniera certa senza guardare l'html prodotto?

ciao
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Pietro,
hai provato a dare l'attributo ClientIDMode="Static" al RequiredFieldValidator? In questo modo l'ID sarà esattamente quello che hai impostato tu sul controllo stesso.

Dopodiché, lato client, potrai recuperare il testo dell'errore in questo modo:
var testoErrore = document.getElementById("idValidator").textContent;

Ho usato la proprietà .textContent perché, al contrario di .innerText, funziona anche quando l'elemento è invisibile.

ciao,
Moreno

Enjoy learning and just keep making
3.939 messaggi dal 28 gennaio 2003
Ciao. Purtroppo non mi sono spiegato bene.
Ho un form con campi e validatori. Un pulsante submit e un pulsante azzera.
Il pulsante azzera, lato client, deve pulire tutte le immissioni dell'utente e cancellare tutti i messaggi di errore dei validatori.
Ho provato col codice di sotto e sembra andare
function azzera()
{
    //pulisco il campo
    document.getElementById("<%=Me.c_data.ClientID%>").value = "";



  //pulisco il messaggio di errore
    var v = document.getElementById("<%=Me.rfv_data.ClientID%>");
    var d = "<%= Me.rfv_data.Display.ToString%>"
    if (d == "Static") v.style.visibility = "hidden"; else v.style.display = "none";
    
  //pulisco il ValidationSummary
    var v = document.getElementById("<%=Me.ValidationSummary1.ClientID%>");
    v.style.display = "none";


}


poi è sorto un altro problema
Il pulsante di Submit deve, prima validare e, se è passata la validazione, chiedere la conferma dell'operazione.
Il tutto però (e qui il problema) senza interferire con altri pulsanti server con CausesValidation false.

Ho messo un pulsante server
<asp:Button ID="Button4" runat="server" Text="Refresh" OnClientClick="valida5(this); return false;" />


e la funzione valida5
function valida5(v)
{
    if(typeof(Page_ClientValidate) == "function" && !Page_ClientValidate() ) 
    {
        Page_BlockSubmit = false;
        return false; 
    }

    if(!confirm('Confermi?'))
    {
      return false;
    }

    v.disabled = true; 

    <%=Me.ClientScript.GetPostBackEventReference(Me.Button4, "") %> ;    
}



e qui la domanda
Ho dovuto mettere l'istruzione Page_BlockSubmit = false; perché, senza di quella, un eventuale pulsante non legato ai validatori, deve essere premuto due volte per eseguire il submit.

Page_BlockSubmit = false; non l'ho trovata nella documentazione e volevo sapere se è corretta (a me sembra che funzioni)

ciao
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Pietro,

pietro09 ha scritto:

Il pulsante di Submit deve, prima validare e, se è passata la validazione, chiedere la conferma dell'operazione.

Penso che ti converrebbe farlo al submit del form perché l'evento submit viene scatenato solo dopo che la validazione è andata a buon fine. (ASP.NET non causa il postback se la validazione era fallita in primo luogo).

Dunque potresti fare semplicemente:
<form id="form1" runat="server" onsubmit="return confirm('Vuoi davvero inviare il form?')">


Mentre al bottone togli la parte OnClientClick, dato che ormai non serve più.
<asp:Button ID="Button4" runat="server" Text="Refresh" />


Può andare?

ciao,
Moreno

PS. Per la funzione "Azzera" potresti avvalerti della collezione Page_Validators, che già contiene i riferimenti agli elementi dei validatori.

for (var i = 0; i<Page_Validators.length; i++){
  Page_Validators[i].style.visibility="hidden";
}

Modificato da BrightSoul il 23 dicembre 2014 13.57 -

Enjoy learning and just keep making
3.939 messaggi dal 28 gennaio 2003
ti ringrazio, ci provo subito!

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.