campo non presente nel form

Gae

Utente Attivo
15 Mar 2021
41
3
8
Salve, da poco uso JS e non capisco come risolvere questo problema.
Ho una funzione js
async function cercaInTable( chiChiama, cercaMono ) {
let url;

/* Filtra i dati in base all'input o alla select */
const input = document.getElementById('cercaTable').value;
const select = document.querySelector('select[name="cercaRegioneTable"]').value;
print('sele ')
}
Che viene richiamata da un bottone di una form.
Mentre il campo del primo rigo é presente in tutte le form, il secondo solo in alcune.
Per le form che hanno solo il primo campo la print non viene stampata e l'elaborazione si blocca.
Dovrei prima controllare se il campo sella select esistse e se vero elaborarla.
Qual'é la giusta soluzione ?
Grazie
 

WmbertSea

Moderatore
Membro dello Staff
MOD
28 Nov 2014
444
73
28
Ciao, come dici, il problema è più che altro in questa parte:
JavaScript:
document.querySelector('select[name="cercaRegioneTable"]').value;
Il metodo querySelector restituisce l'elemento trovato solo quando questo è presente nel DOM, altrimenti restituisce un valore null.

E' chiaro che il valore null NON ha alcuna proprietà, tanto meno la proprietà value. Dal momento che stai tentando di accedere ad una qualsivoglia proprietà di un valore null, l'interprete JavaScript genera un errore che interrompe lo script.

Puoi risolvere in vari modi, più o meno adeguati a seconda del contesto, ad esempio con una semplice condizione puoi controllare preventivamente che l'elemento sia trovato per poi accedere eventualmente alle sue proprietà ed elaborare ciò che ti serve, come hai suggerito tu stesso.

Analogamente potresti risolvere con un operatore ternario con cui assegnare un valore alla variabile select che, nel caso l'elemento non esista, restituisca comunque un certo valore, ad esempio undefined.

JavaScript:
const select = document.querySelector('select[name="cercaRegioneTable"]') ? document.querySelector('select[name="cercaRegioneTable"]').value : undefined;

Un sistema analogo ma più recente (introdotto con ECMAScript 2020) è l'uso del costrutto ?. (cosiddetto operatore di concatenamento opzionale, vedi documentazioni online) che risolve lo script in modo più sintetico:

JavaScript:
const select = document.querySelector('select[name="cercaRegioneTable"]')?.value;
Nota la sintassi "?." che permette di accedere alla proprietà a seguire solo quando l'oggetto esiste, altrimenti sarà restituito un valore undefined.

Ancora, un altro sistema ingegnoso (usato quando ancora non esisteva il concatenamento opzionale) prevede l'uso dell'operatore || (OR logico) per creare un oggetto al volo (anche vuoto) qualora l'oggetto iniziale sia nullo o inesistente:

JavaScript:
const select = (document.querySelector('select[name="cercaRegioneTable"]') || {}).value;
in questo caso sarà restituito un valore undefined perché l'oggetto vuoto non possiede la proprietà value, tuttavia non saranno generati errori.

... e altri eventuali sistemi simili.

Nel tuo caso, se devi escludere tutta una parte di script che fa riferimento a quella costante, forse è più adeguato il primo metodo, porre una semplice condizione if con cui far eseguire tale script solo se l'elemento esiste.

Vedi tu come ti sembra meglio.
Buon proseguimento.
 

Gae

Utente Attivo
15 Mar 2021
41
3
8
Provato il più recente e funziona
Grazie sia per la soluzione che le completa esposizione
 
  • Like
Reactions: WmbertSea
Discussioni simili
Autore Titolo Forum Risposte Data
L [PHP] case then e campo non riconosciuto PHP 0
D [PHP] in una determinata fascia oraria non visualzzare campo PHP 5
C [PHP] Campo facoltativo del form che non deve risultare nella risposta se negativo PHP 6
G [ACCESS2007]: contare li ultimi record con lo stesso valore in un campo, finchè il valore non cambia MS Access 2
G non mostrare un determinato campo se PHP 1
D Se non c'è il campo da sommare Javascript 2
L modifica campo non funziona PHP 7
A controllo su valore da campo textarea non funziona PHP 7
Shyson Non si colora il campo alert Javascript 5
S Campo di testo che non funziona !???!?!!? MySQL 79
asevenx form che non invia al DB un campo PHP 6
R Campo Effect non cliccabile Flash 2
J Problema campo id in mysql - non trovo l'errore!!! PHP 1
P non mi escono correttamente i dati da un campo di una tabella PHP 0
B recupero valore campo file ( proprio non capisco ) PHP 0
S Usare onmouseover con 'campo immagine' e non al tag <img> Javascript 3
A Disabilitare un campo se non è selezionato SI Javascript 1
steveaustin Apostrofo non visualizzato su campo di testo PHP 1
A Campo password non accettato Classic ASP 1
G Valore del campo id maggiore di 9999 MySQL 0
S da casella di testo a campo tabella Database 0
M Vendo il mio sito web teknosurfng.com, che trasmette nel campo della tecnologia Compravendita siti e domini 0
F errore 1062 su campo nuovo MySQL 4
R Aprire maschera con Openform filtrando un campo testuale con un valore recuperato da un'altra maschera MS Access 10
D Visualizzazione pagina basata sul valore di un campo del database PHP 2
A pulsante di update campo mysql con javascript Javascript 2
M Creare un campo input select quantità di un numero intero prelevato dal db PHP 3
D riempire campo inserendo un valore in un altro campo PHP 2
S riflettere valore di campo input range in live Javascript 0
P Ricerca campo data PHP 1
M Aggiornare stesso campo in due tabelle PHP 0
U Campo vuoto data errore Fatal error: PHP 2
Alex_70 Aggiornare campo da un altro campo PHP 16
F Steps campo input field Javascript 1
N Chiave Primaria in Campo Calcolato Windows e Software 1
I Focus su un campo Javascript 9
Alex_70 Nascondere label tab se campo vuoto PHP 2
G Impostare suggerimenti campo text di un form Javascript 2
Shyson Inserire placeholder nel campo cerca PHP 5
B Campo ricerca domini HTML e CSS 4
D verifica codice fiscale persona fisica /aziendale stesso campo HTML e CSS 1
G Campo Not null a condizione MySQL 8
M [PHP] Compilare automaticamente il campo data PHP 5
M [PHP] Problemi di salvataggio su campo calcolato PHP 0
M [PHP] Salvare campo di una tabella in una variabile PHP 14
M [MySQL] CREARE UN LINK SU UN DETERMINATO CAMPO DI UNA TABELLA RISULTATO DI UNA QUERY SQL MySQL 3
D [ASP] Leggere Campo decimal MYSQL Classic ASP 1
S [ASP] SALVARE VALORE SELECT OPTION SU CAMPO TABELLA ACCESS Classic ASP 9
M [PHP] Drop down in campo select PHP 1
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2

Discussioni simili