Originariamente inviato da nexus
...
comuqneu adesso provo a vedere
grazie intanto
Bravo, mi sembra giusto prima provare.

NaN è una costante di JavaScript che significa "Not-A-Number", ovvero che un valore non è di tipo numerico (sia esso integer, cioè un numero intero, o float, un numero decimale).

La funzione isNaN() verifica che il valore passatole come argomento sia un numero, intero o decimale, e restituisce un valore booleano, TRUE se è numerico, FALSE se non lo è. Dal momento che il tuo form contiene campi di testo in cui si possono inserire anche caratteri diversi dai numeri mi è sembrato il minimo effettuare un pur blando controllo sull'entità dei valori inseriti al fine di evitare funzionamenti indesiderati all'utente.
Se l'utente inserisce una lettera al posto di un numero, riceverà un alert al momento dell'invio del form che lo informa dell'errore e gli permette di rettificare il campo. (In realtà se inserisce prima un numero e poi una lettera la funzione parseFloat() legge solo il numero, quindi non è un vero e proprio controllo sul campo; per quello ci vuole una RegExp).

L'alert non è un pop-up, ovvero una nuova finestra del browser contenente un nuovo documento, ma è un'informazione del browser stesso ad un livello superiore a quello del documento che impedisce di continuare ad operare sul documento (e talvolta blocca l'esecuzione degli script) finché l'utente non dà l'ok al messaggio mostrato.

Originariamente inviato da nexus
...
altrimenti(e qui non capisco) recupera il valore di npx?
npx non è una variabile che esiste inizialmente nel tuo form, è una variabile che crei tu nello script, alla quale associ il valore di un elemento del tuo form.
Se tu non crei quella variabile, JavaScript non ne sa niente di npx.
JavaScript conosce a priori solo le costanti e le funzioni predefinite, in più accede agli oggetti del documento, quindi lui "vede" il valore del campo di testo con id "npx", ma per lui è solo document.getElementById('npx').value

Sei tu poi che per comomdità associ quel valore alla variabile anche per una questione di comodità (e di spazio di memoria), perché è più breve scrivere npx che non document.getElementById('npx').value (N.B.: è un'assegnazione per valore, non per riferimento, ovvero se modifichi npx non modifichi document.getElementById('npx').value, ovvero il contenuto del text input).

document.getElementById(ID) restituisce l'oggetto il cui ID è passato come argomento del metodo getElementById()
Prova a lanciare alert(document.getElementById('npx')) e vedi cosa ti restituisce nell'alert box.
Poi prova a lanciare alert(document.getElementById('npx').value)) oppure alert(document.getElementById('npx').value.length) )

Il metodo di debug attraverso i controlli di flusso che con PHP fai attraverso un echo "msg" o print("msg") con Javascript lo puoi assimilare ad alert() mettendolo nel punto del documento in cui vuoi verificare se la compilazione arriva (o se è stata bloccata prima dal parser del browser) o per verificare il valore effettivo di una variabile che lo script riceve.