Disabilitare parzialmente convalida lato client

lunedì 23 gennaio 2006 - 17.03

zhart Profilo | Newbie

Ciao a tutti.

Problema1
Ho una Web Form e in essa carico un Web User Control.
Nel Web User Control ho messo dei controlli per svolgere due funzionalità:
1. (Rinomina) per la quale ho una TextBox, il relativo RequiredFieldValidator e un pulsante rinominaBTN
2. (Registra) per la quale ho anche questa volta textBox, RequiredFielValidator e registraBTN
Ricapitolando ho 2 TextBox, 2 RFV e due Bottoni nello stesso user control.
Vorrei che le cose andassero così: premo rinominaBTN e mi esegua una convalida lato client solo del TextBox relativo; premo registraBTN e mi esegua la convalida solo del Textbox relativo.

Problema2
Ho una web form e due Web User Control.
In una web user control ho un bottone che richiama necessariamente un Page.ResponseRedirect.
Nell'altro user control ho diverse Textbox, relativi RequiredFieldValidator e un pulsante Submit.
Vorrei che premendo il bottone del primo user control non mi eseguisse la convalida relativa ai controlli dell'altro web user control; invece lo fa.

N.B. Conosco Javascript solo di vista.

Grazie anticipatamente

micto27 Profilo | Senior Member

Per il pulsante che non vuoi faccia validazione prova ad impostare la proprietà CausesValidation = False.

Ciao, Michele.

zhart Profilo | Newbie

Che sbadato!!! me ne ero dimenticato; grazie Michele.
Rimane comunque il problema1

zhart

micto27 Profilo | Senior Member

Ciao, scusami ma leggendo in fretta avevo fatto attenzione solo al problema 2.

Per il problema1 prova a valutare se la seguente soluzione può andarti bene:

inserisci a disposizione della pagina una funzione javascript simile a questa:

// vId = clientId del validator da trattare
// value = true/false
function EnableValidator(vId, value) {
ValidatorEnable(document.getElementById(vId),value);
}

nell'evento Load della pagina puoi configurare i 2 pulsanti nel seguente modo:

Me.rinominaBTN.Attributes.Add("onclick", "EnableValidator('ReqFldVal_registra', false);EnableValidator('ReqFldVal_rinomina', true);")

Me.registraBTN.Attributes.Add("onclick", "EnableValidator('ReqFldVal_registra', true);EnableValidator('ReqFldVal_rinomina', false);")

ReqFldVal_rinomina.Enable = True
ReqFldVal_registra.Enable = True

gestire sul click (lato server) la disabilitazione del Validatore che non c'entra:

Private Sub registraBTN_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles registraBTN.Click
Me.ReqFldVal_rinomina.Enabled = False
End Sub

Private Sub rinominaBTN_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles rinominaBTN.Click
Me.ReqFldVal_registra.Enabled = False
End Sub


Ciao, Michele

micto27 Profilo | Senior Member

Circa il "Problema 1" un altro approccio potrebbe essere quello di inizializzare i 2 pulsanti come "Disabilitati" per attivarli poi lato client gestendo l'evento onkeyup con la seguente funzione che condiziona l'abilitazione del pulsante al fatto che il textbox non sia vuoto.

// txtId = clientId del textbox
// btnId = clientId del pulsante
function EnableIfNotEmpty(txtId, btnId) {
var t = document.getElementById(txtId);
var b = document.getElementById(btnId);

if (t.value != '')
{
b.disabled=false;
}
else
{
b.disabled=true;
}
}


Lato server:

Me.TextBox1.Attributes.Add("onkeyup", "EnableIfNotEmpty('" + Me.TextBox1.ClientID + "', '" + Me.Button1.ClientID + "');")


Ciao, Michele


zhart Profilo | Newbie

Ciao michele.
Ho risolto grazie al tuo post anche il problema1. E' andato tutto perfettamente a primo colpo.
Per quanto riguarda l'altra possibile soluzione al problema2 sinceramente avendo già applicato l'altra soluzione e avendo poco tempo non l'ho ancora letta ma sono sicuro che lo farò più tardi.
Grazie ancora

zhart
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5