alerta no está cooperando con entrada

Sé que puedo crear un usuario pero no quiero que php descubra si hay contenido en la entrada o no, ¿por qué debería haberlo hecho con jquery?

El problema es que jquery no vuelve y me dice lo que está mal? y El problema es que no vuelve y muestra mi Alerta de alguna manera. o lo que me falta de agregarle.

jQuery

$(function () { var $opretbruger = $(".opretbruger"), $pwd = $("#pass2"), $usr = $("#brugernavn"); $navn = $("#fornavn"); $efter = $("#efternavn"); $tjek = $("#tjek"); $opretbruger.on("submit", function (event) { var msg = "Husk ", usr = ($usr.val().trim() !== ""), pwd = ($pwd.val().trim() !== ""); navn = ($navn.val().trim() !== ""); efter = ($efter.val().trim() !== ""); tjek = ($tjek.val().trim() !== ""); msg += !usr ? "brugernavn" : ""; msg += !usr && !pwd ? " og " : ""; msg += !pwd ? "kodeord" : ""; msg += !usr && !pwd && !navn ? " og " : ""; msg += !navn ? "fornavn" : ""; msg += !usr && !pwd && !navn && !efter ? " og " : ""; msg += !efter ? "efternavn" : ""; msg += !usr && !pwd && !navn && !efter && !tjek ? " og " : ""; msg += !tjek ? "Jeg godkender brugerbetingelserne!" : ""; (pwd && usr && navn && efter && tjek) || alert(msg); return (pwd && usr && navn && efter && tjek); }); }); 

Html

 <form name="opretbruger" action="" method="post" id="opretbruger"> 
Brugernavn
Password
Fornavn
Efternavn
Betingelserne Jeg godkender brugerbetingelserne

Me hubiera gustado que falte el correo electrónico y la contraseña, por lo que debe aparecer y decirle que no.

El selector de formulario debe ser $opretbruger = $('form[name="opretbruger"]') porque opretbruger es el nombre de la forma no clase

 var $opretbruger = $('form[name="opretbruger"]') 

Demostración: Fiddle

Además, en lugar de evaluar la validez dos veces, guarde en caché el valor como

  var valid = pwd && usr && navn && efter && tjek; if (!valid) { alert(msg); } return valid; 

Demostración: Fiddle

No

 var $opretbruger = $(".opretbruger"), 

Pero

 var $opretbruger = $("#opretbruger"), 

Como

 

Coloque las declaraciones de variables dentro de la función de evento. De lo contrario, solo está agarrando los vars una vez. Tampoco reutilice las variables para contener datos tanto de cadena como booleanos.

 $opretbruger.on("submit", function (event) { var $opretbruger = $(".opretbruger"), $pwd = $("#pass2"), $usr = $("#brugernavn"); $navn = $("#fornavn"); $efter = $("#efternavn"); $tjek = $("#tjek"); var msg = "Husk ", usr = ($usr.val().trim() !== ""), pwd = ($pwd.val().trim() !== ""); navn = ($navn.val().trim() !== ""); efter = ($efter.val().trim() !== ""); tjek = ($tjek.val().trim() !== ""); 

Puntos de estilo: use if () en lugar de cortocircuitos. Evitar la coma Lo hace confuso para leer.

Aquí hay muchas cosas malas, pero definitivamente no enviarás ese formulario a ningún lado a menos que lo reemplaces:

 

con

  

Y cambia esto:

 var $opretbruger = $(".opretbruger") 

a esto

 var $opretbruger = $("#opretbruger") 

Y finalmente haz que tu envío se vea así:

 $opretbruger.on("submit", function (evt) { var e = evt || window.event; e.preventDefault(); ... // at the bottom - replace return with: $(this).submit(); }); 

Estoy tratando de descubrir qué se supone que debe hacer esta línea:

  (pwd && usr && navn && efter && tjek) || alert(msg); 

Querías decir

 if (pwd && usr && navn && efter && tjek) alert(msg); 

?

Parece tener un error tipográfico en las declaraciones de variables. Estás usando ; en lugar de ,

 var $opretbruger = $(".opretbruger"), $pwd = $("#pass2"), $usr = $("#brugernavn"), $navn = $("#fornavn"), $efter = $("#efternavn"), $tjek = $("#tjek"); 

Y también:

 var msg = "Husk ", usr = ($usr.val().trim() !== ""), pwd = ($pwd.val().trim() !== ""), navn = ($navn.val().trim() !== ""), efter = ($efter.val().trim() !== ""), tjek = ($tjek.val().trim() !== ""); 

Debería intentar usar jshint para ayudarlo con ese tipo de problema.