Domanda

configurazione semplice: Carrello spesa sotto forma di un elenco di dati.

Intestazione ha due pulsanti: Aggiornamento quantità e rimuovere gli oggetti selezionati

Ogni DataList Item ha (tra le altre cose) una casella di testo con l'id = "txtQty" che memorizza la quantità dell'articolo carrello.

L'utente deve essere in grado di modificare i valori in queste caselle di testo e quindi premere il pulsante Aggiorna quantità nell'intestazione per salvare tutte le modifiche in una sola volta.

Ho la logica fatto per il risparmio effettivo, ma ora sto andando indietro per aggiungere un po 'di validazione in più. Speravo di chiamare una sola funzione JavaScript dall'evento OnClientClick del pulsante UpdateQuantities, che sarebbe poi scorrere tutte le DataListItems, trovare la casella di testo txtQty, e assicurarsi che sia di input numerico valido.

Sto avendo un po 'di difficoltà a capire il modo migliore per andare su questo. Finora la mia unica vera idea sarebbe quella di ciclo tra gli elementi del modulo e trovare qualsiasi cosa con un ID che corrisponde a "txtQty" (in quanto ASP.NET riscrive l'id del automaticamente), e quindi convalidare tale specifico elemento. Questo non suona come la soluzione migliore. Ci sono delle idee migliori che galleggiano intorno là fuori?

È stato utile?

Soluzione 2

Ho finito per usare un po 'del metodo di LongHorn per ottenere i miei risultati desiderati. Utilizzando un validatore personalizzato ho usato la capacità di validazione lato client per chiamare una funzione JS che ha verificato la casella di testo individuale su evento di modifica del testo.

Non era la mia soluzione ideale, ma è stato utile. Ho anche il verificano convalida sul lato server per l'intero elenco prima che si verifichi qualsiasi elaborazione per ogni evenienza pure.

Altri suggerimenti

Perché non mettere un validatore sul DataGrid per controllare per vedere se il qty è un numero valido? Questo sarebbe il più semplice in assoluto.

Se questo non è una soluzione, avrei tutte quelle caselle di testo txtQty hanno la stessa classe CSS. Quindi è possibile utilizzare JQuery per trovare tutti gli elementi con lo stesso nome di classe e ciclo attraverso di loro. Che è molto meglio di loop attraverso l'intero modulo e controllando se l'id dell'elemento contiene 'txtQty' nel suo id.

Un altro modo, è quello di avere un campo nascosto che avrebbe tutti gli ID delle caselle di testo che si desidera controllare. Si potrebbe aggiungere a questo campo nascosto come sono aggiunte le caselle di testo. Poi basta rompere il campo nascosto in un array id, e trovare solo quelle id.

Duplica ID di realtà non sono una buona cosa. Si potrebbe provare l'assegnazione di una classe alla casella di testo -. "Validate-quantità" sarebbe bene, perché è possibile applicare più classi regole di convalida

<input type="textbox" class="validate-quantity validate-min" />

In questo modo si potrebbe scorrere il modulo di ricerca per le regole di convalida, invece di puntare un specificamente una casella di testo.

perché non si basta aggiungere la convalida come un attributo sull'evento onchange di ciascuna delle caselle di testo. È meglio fare la convalida quando fanno il cambiamento.

È possibile aggiungere un controllo di convalida o di rotolare il proprio.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top