登记表验证
我想验证此表单,忽略输入字段的默认值。我使用 jQuery 验证插件尝试了所有可能的方法。由于我是 JS 的初学者,所以很难理解如何使用它。
我的表单看起来像这样
<?php
require "core/code/includes/db.php";
if (mysqli_connect_errno()) {
printf("Baza ilə əlaqədə problem var: %s\n Xahiş edirik administrator ilə əlaqə yaradasınız: [email protected]", mysqli_connect_error());
exit();
}
?>
<form id="reg" method="post" action="core/code/functions/signup.php" onSubmit="return checkForm(this);">
<table width="270px" style="clear:both">
<tr>
<td class="numbers" rowspan="3">
1
</td>
<td colspan="3" style="font-weight:bold; color:#333; font-size:13px">
Əsas məlumatlar
</td>
</tr>
<tr>
<td ><input class="part1 default required" type="text" name="fname" value="Adınız" /></td>
<td ><input class="part1 default required" type="text" name="mname" value="Atanızın adı"/></td>
<td ><input class="part1 default" type="text" name="lname" value="Soyadınız" /></td>
</tr>
...
...
<input class="button button-gray" type="submit" value="Tamam" name="submit"/>
</p>
</form>
<script type="text/javascript" src="core/code/js/jquery-ui.js"></script>
<script src="core/code/js/mask.js"></script>
<script src="core/code/js/reg.js"></script>
<script type="text/javascript" src="core/code/js/acompl.js"></script>
和 reg.js
var defaultValues = {
'fname': 'Adınız',
'mname': 'Atanızın adı',
'lname': 'Soyadınız',
'phone': 'Telefon',
'email': 'Email',
'pwd':'Şifrə',
'region':'Rayon',
'school':'Məktəb',
'login':'Istifadəçi adı',
'class':'Sinif',
'subject':'Fənnin adını daxil edin',
'dob': 'Date of Birth'
};
$('input').live('focus', function() {
var el = $(this);
if (el.hasClass('default')) {
el.removeClass('default').val('');
}
if (el.attr('id') === 'dob') {
$(this).mask('99.99.9999', {placeholder:' '});
}
});
$('input').live('blur', function() {
var el = $(this);
var name = el.attr('name');
// Really we only want to do anything if the field is *empty*
if (el.val().match(/^[\s\.]*$/)) {
// To get our default style back, we'll re-add the classname
el.addClass('default');
// Unmask the 'dob' field
if (name == 'dob') {
el.unmask();
}
// And finally repopulate the field with its default value
el.val(defaultValues[name]);
}
});
I want to validate this form ignoring default values of input fields. I tried all possible ways with jQuery validate plugin. It's hard to understand how to use it, since I'm a beginner to JS.
My form looks like that
<?php
require "core/code/includes/db.php";
if (mysqli_connect_errno()) {
printf("Baza ilə əlaqədə problem var: %s\n Xahiş edirik administrator ilə əlaqə yaradasınız: [email protected]", mysqli_connect_error());
exit();
}
?>
<form id="reg" method="post" action="core/code/functions/signup.php" onSubmit="return checkForm(this);">
<table width="270px" style="clear:both">
<tr>
<td class="numbers" rowspan="3">
1
</td>
<td colspan="3" style="font-weight:bold; color:#333; font-size:13px">
Əsas məlumatlar
</td>
</tr>
<tr>
<td ><input class="part1 default required" type="text" name="fname" value="Adınız" /></td>
<td ><input class="part1 default required" type="text" name="mname" value="Atanızın adı"/></td>
<td ><input class="part1 default" type="text" name="lname" value="Soyadınız" /></td>
</tr>
...
...
<input class="button button-gray" type="submit" value="Tamam" name="submit"/>
</p>
</form>
<script type="text/javascript" src="core/code/js/jquery-ui.js"></script>
<script src="core/code/js/mask.js"></script>
<script src="core/code/js/reg.js"></script>
<script type="text/javascript" src="core/code/js/acompl.js"></script>
And reg.js
var defaultValues = {
'fname': 'Adınız',
'mname': 'Atanızın adı',
'lname': 'Soyadınız',
'phone': 'Telefon',
'email': 'Email',
'pwd':'Şifrə',
'region':'Rayon',
'school':'Məktəb',
'login':'Istifadəçi adı',
'class':'Sinif',
'subject':'Fənnin adını daxil edin',
'dob': 'Date of Birth'
};
$('input').live('focus', function() {
var el = $(this);
if (el.hasClass('default')) {
el.removeClass('default').val('');
}
if (el.attr('id') === 'dob') {
$(this).mask('99.99.9999', {placeholder:' '});
}
});
$('input').live('blur', function() {
var el = $(this);
var name = el.attr('name');
// Really we only want to do anything if the field is *empty*
if (el.val().match(/^[\s\.]*$/)) {
// To get our default style back, we'll re-add the classname
el.addClass('default');
// Unmask the 'dob' field
if (name == 'dob') {
el.unmask();
}
// And finally repopulate the field with its default value
el.val(defaultValues[name]);
}
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
首先,我认为您应该为每个表单元素添加一个
id
。我不认为 jQuery 会获取 DOM 元素及其name
。您的表单有一个 id,但没有您的输入元素。例如,请参阅下面的输入元素(id 可以与名称相同):
现在您可以通过 jQuery 获取该元素,如下所示:
alert($('#pwd').val());< /code>
pwd
之前的#
表示该元素是通过其 id 选择的。您还可以通过引用其类来选择元素,如下所示:
alert($('.className').val());
但这将选择应用了相同类的所有匹配元素。进行单一且具体的选择;你应该使用id。所以,如果我理解你的问题的话;您可以通过检查这些元素是否具有默认值或者它们是否为空来验证这些元素的值。然后检查其他标准,例如密码长度等。
注意:我同意 Jared 的观点。您也应该在服务器端验证此表单;因为代码在浏览器中可见并且很容易被绕过。
First I think you should add an
id
to each form element. I don't think jQuery will grab a DOM element with itsname
. Your form has an id but not your input elements.So for example, see the input element below (the id can be same as the name):
Now you can grab that element via jQuery like this:
alert($('#pwd').val());
The
#
beforepwd
indicates that the element is being selected by its id.You could also select an element by referecing its class like this:
alert($('.className').val());
but this will select all matching elements with the same class applied to them. To make a single and specific select; you should use ids.So, if I understand your question right; you can validate the value of these elements by checking whether they have the default value or if they are empty first. Then checking other criterias such as password length, etc..
Note: I agree with Jared. You should validate this form on the server-side too; since the code is visible in the browser and can easily be by-passed.
这在某种程度上可能有点过头了,但我想在这里展示一些不同的东西。主要是:
$.data()
来存储与元素相关的数据阅读评论,如果您有任何疑问,请告诉我。
模拟 HTML
Javascript
http://jsfiddle.net/userdude /CMmDF/
This might be overkill in a way, but I wanted to demonstrate a few different things here. Primarily:
$.data()
to store your element-related dataRead through the comments and let me know if you have any questions.
Mock HTML
Javascript
http://jsfiddle.net/userdude/CMmDF/