Ciclare su campi dentro un div

venerdì 10 febbraio 2012 - 13.41

zenx Profilo | Newbie

Buongiorno a tutti e grazie dell'aiuto ...qualsiasi aiuto mi possiate dare ..
molto semplice (per voi) ....
ho un div con all'interno una tabella con dei campi..
Semplicemente al click di un pulsante chiamo una function js che
- mi fa un ciclo nel div
- verifica se un elemento è textbox
- se true controlla se la textbox è piena.
- se piena continua il ciclo passando al textbox successivo
- se è vuota visualizza un alert ed esce

La procedura che ho scritto sotto funziona , solo che controlla solo il primo campo...nel senso che se il primo non è compilato melo segnala
ma una volta riempito il primo campo...non fa lo stesso con i seguente ....NON FA PIU NIENTE!
Inoltre non capisco perche le proprietà della collection "all" mi dice che ci sono un botto di elementi in piu oltre che i campi...ci sono elementi senza nome , e altra roba che non capisco.
Grazie per l'aiuto
Ciao a tutti

function CheckEmpty(idDiv)
{
var t = document.getElementById(idDiv);
var Nelement = t.all.length;
for (i = 0; i < Nelement; i++)
{
if (t.all[i].type == "text")
{
if (t.all[i].value == "")
{
alert("il campo |" + t.all[i].id + "| non è stato compilato");
return false;
break;
}
return true;
};
}
}

alx_81 Profilo | Guru

>Buongiorno a tutti e grazie dell'aiuto ...qualsiasi aiuto mi possiate dare ..
ciao

>- mi fa un ciclo nel div
>- verifica se un elemento è textbox
>- se true controlla se la textbox è piena.
>- se piena continua il ciclo passando al textbox successivo
>- se è vuota visualizza un alert ed esce
che ne dici se applichi la tecnologia che ti ho messo nell'esempio? è jQuery, semplice installazione ed implementazione. Ottima leggibilità.. fammi sapere se può andare.
ciao!
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

zenx Profilo | Newbie

Adesso provo...conosco jquery ma poco...
Grazie

alx_81 Profilo | Guru

>Adesso provo...conosco jquery ma poco...
>Grazie
vedrai che è quasi un copia incolla di quello che ti ho fatto.
Se non riesci posta l'html che cerco di applicare al tuo codice.
e comunque, facci sapere
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

zenx Profilo | Newbie

grazie! dire che ci siamo quasi ci sono ancora un paio di cosette...

1- che quando trova un campo vuoto il metodo lato server non deve essere eseguito (non deve fare la submit) Tieni presente la funzione viene chiamata da un bottone ASP.NET
2 - Sarebbe ottima cosa che se il primo campo è vuoto , lui esca dal ciclo ,senza inviare i dati....e senza andare avanti a controllare gli altri campi rimanenti

Ultima cosa che fa (strana) ...se riclicco sempre con i campi blank...non esegue la procedura

Io ho provato a mettere un return false e un return true...ma non va!

Ultimissima cosa: mi spiegheresti questo:
"input[id^=]"
...da come lo interpreto io controlla gli input....e gli altri attributi?

//codice modificato da me
$(document).ready(function () {

$("#Qcontribuenti_save").click(function () {

// ciclo tutti gli input il cui id inizia per txt, contenuti nella tabella "myTable"
$("input[id^=]", $("#TcontribuentiChk")).each(function () {

if ($(this).val() == "")
alert($(this).attr("id") + " vuoto!");
return false;
});
return true;

});

});

GRAZIE INFINITE
ciao

alx_81 Profilo | Guru

>1- che quando trova un campo vuoto il metodo lato server non
>deve essere eseguito (non deve fare la submit) Tieni presente
>la funzione viene chiamata da un bottone ASP.NET
allora la cosa migliore sarebbe fare una funzione lato server e chiamarla col metodo $.ajax (o post: http://api.jquery.com/jQuery.post/) che ti chiama il metodo e ti permette di gestire le callback "success", "error" e "complete". Prova a dare un'occhiata.

>2 - Sarebbe ottima cosa che se il primo campo è vuoto , lui esca
>dal ciclo ,senza inviare i dati....e senza andare avanti a controllare
>gli altri campi rimanenti

$(document).ready(function() { $("#btnCicla").click(function() { // ciclo tutti gli input il cui id inizia per txt, contenuti nella tabella "myTable" $("input[id^=]", $("#myTable")).each(function() { if ($(this).val() == "") { alert($(this).attr("id") + " vuoto! ESCO SUBITO!"); return false; } }); }); });

>Ultima cosa che fa (strana) ...se riclicco sempre con i campi
>blank...non esegue la procedura
col mio esempio ad ogni click fa quello che deve, come hai cambiato?

>Ultimissima cosa: mi spiegheresti questo: "input[id^=]"
>...da come lo interpreto io controlla gli input....e gli altri attributi?
è un selettore css, significa "prendi i controlli di tipo input il cui attributo id (gli attributi si definiscono tra []) inizia per (^=) quello che vuoi".
io ho omesso l'inizia per, ma avrei dovuto mettere, nel mio esempio "input[id^=txt]"


>//codice modificato da me
> $(document).ready(function () {
> $("#Qcontribuenti_save").click(function () {
>// ciclo tutti gli input il cui id inizia per txt, contenuti nella tabella "myTable"
>$("input[id^=]", $("#TcontribuentiChk")).each(function () {
>
> if ($(this).val() == "")
> alert($(this).attr("id") + " vuoto!");
> return false;
> });
> return true;
>
> });
>
> });

credo sia un problema di {} dopo l'if, confrontalo col mio
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

zenx Profilo | Newbie

mah le graffe mi sembrano al posto giusto...
Usando il tuo stesso codice non ottengo il risultato sperato..perchè primo mi viene eseguito il metodo ASP.net associato al bottone e secondo , alla seconda volta (dopo che è stato eseguito il metodo lato server) il controllo Jquery non viene piu eseguito.
Forse perche tutto il codice (tabella con campi e bottone) stanno racchiusi dentro un updatepanel??
Grz mille e scusa per la rottura.
Ciao
G.

alx_81 Profilo | Guru

>mah le graffe mi sembrano al posto giusto...
no, non lo sono secondo me:

errato:
if ($(this).val() == "") alert($(this).attr("id") + " vuoto!"); return false;

corretto:
if ($(this).val() == "") { alert($(this).attr("id") + " vuoto!"); return false; }

>Usando il tuo stesso codice non ottengo il risultato sperato..perchè
>primo mi viene eseguito il metodo ASP.net associato al bottone
>e secondo , alla seconda volta (dopo che è stato eseguito il
>metodo lato server) il controllo Jquery non viene piu eseguito.
>Forse perche tutto il codice (tabella con campi e bottone) stanno
>racchiusi dentro un updatepanel??
il fatto che ci sia un updatepanel non aiuta, preferisco sempre usare controlli nativi e poi gestire la chiamata con le callback come ti dicevo prima.
Siccome c'è di mezzo un controllo che non ho praticamente mai usato non mi sento di fare affrettate conclusioni.
Se vuoi, prova a fare la post con jquery, altrimenti non saprei dirti se il problema è legato all'updatepanel.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi

zenx Profilo | Newbie

intanto grz mille.
ti faccio sapere
ciao

zenx Profilo | Newbie

Ciao , guarda non ne riesco a venire fuori , ma in compenso ho sistemato la mia function
, sbagliavo la posizione del return true...e poi mettendo il return anche nell'evento che chiama la function , adesso esegue la submit bene...
ti posto il codice cosi se vuoi ci dai un occhiata.
Comunque grazie , se posso ti disturbero ancora per altre cose JQ

function CheckEmpty(idDiv) {
var t = document.getElementById(idDiv);
var Nelement = t.all.length;
for (i = 0; i < Nelement; i++)
{
if (t.all[i].type == "text")
{
if (t.all[i].value == "")
{
alert("il campo -- " + t.all[i].id + " -- non è stato compilato");
return false;
}
};
}
return true;
}

alx_81 Profilo | Guru

>Comunque grazie , se posso ti disturbero ancora per altre cose JQ
certo che puoi, è un forum solo che disturbi tutti non solo me, sii preparato


--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
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