我知道这样做你可以创建用户但是我不想让php知道输入中是否有内容,我为什么要用jquery来完成它,
问题是jquery没有回来告诉我出了什么问题?问题是它不会以某种方式返回并显示我的警报。或者我缺少的东西。
的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="<?php $_SERVER['PHP_SELF'];?>" method="post" id="opretbruger">
<table width="100%" cellpadding="0" cellspacing="0">
<tr>
<td>Brugernavn</td>
<td><input type="email" name="email" class="opretbar" id="brugernavn"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="pa2" class="opretbar" id="pass2"></td>
</tr>
<tr>
<td>Fornavn</td>
<td><input type="text" name="fornavn" class="opretbar" id="fornavn"></td>
</tr>
<tr>
<td>Efternavn</td>
<td><input type="text" name="efternavn" class="opretbar" id="efternavn"></td>
</tr>
<tr>
<td>Betingelserne</td>
<td><input type="checkbox" name="tjek" id="tjek"> Jeg godkender <a href="/brugerbetingelser/">brugerbetingelserne</a></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="tilmelddiggratis" value="Opret bruger" class="click opretbruger"></td>
</tr>
</table>
</form>
本来希望它是如此确定的电子邮件和密码丢失所以它必须挺身而出并告诉它缺乏它。
答案 0 :(得分:2)
表单选择器应为$opretbruger = $('form[name="opretbruger"]')
,因为opretbruger
是表单的名称而不是类
var $opretbruger = $('form[name="opretbruger"]')
演示:Fiddle
另外,不要两次评估有效性,而是将值缓存为
var valid = pwd && usr && navn && efter && tjek;
if (!valid) {
alert(msg);
}
return valid;
演示:Fiddle
答案 1 :(得分:0)
我正在试图弄清楚这条线应该做什么:
(pwd && usr && navn && efter && tjek) || alert(msg);
你的意思是
if (pwd && usr && navn && efter && tjek) alert(msg);
答案 2 :(得分:0)
这里有很多错误,但你肯定不会在任何地方提交该表格,除非你更换:
<form ... action="<?php $_SERVER['PHP_SELF'];?>"
与
<form ... action="<?php print $_SERVER['PHP_SELF']; ?>"
并改变这一点:
var $opretbruger = $(".opretbruger")
到这个
var $opretbruger = $("#opretbruger")
最后让你的提交看起来像这样:
$opretbruger.on("submit", function (evt) {
var e = evt || window.event;
e.preventDefault();
...
// at the bottom - replace return with:
$(this).submit();
});
答案 3 :(得分:0)
不
var $opretbruger = $(".opretbruger"),
但是
var $opretbruger = $("#opretbruger"),
作为
<form ... id="opretbruger">
答案 4 :(得分:0)
将变量声明放在事件函数中。否则它只会抓住一次变量。也不要重用变量来保存字符串和布尔数据。
$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() !== "");
样式点:使用if()而不是短路。避免使用逗号。让阅读困惑。
答案 5 :(得分:-1)
似乎在变量声明中有拼写错误。您使用;
代替,
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() !== "");
您应该尝试使用jshint来帮助您解决这类问题。