正在检查标签文本,并验证与其绑定的输入字段是否至少包含x个数量的字符
Checking label text and verifying that input field tied to it has at least x amount characters
我对这种语言非常陌生。我有能力检查标签刺痛,但我想确保它旁边的输入字段至少有6位数字(如果可能的话是数字)
$(document).ready(function(){
$("label:contains('6 digit')") //i get lost here
});
标记:
<form>
<label>Test</label><input value="1" type="text" class="check">
<label>Test</label><input value="1" type="text" class="check">
<label>Test</label><input value="1" type="text" class="check">
<label>6 digit</label><input value="1" type="text" class="check">
<label>6 digit</label><input value="1" type="text" class="check">
<label>Test</label><input value="1" type="text" class="check">
<input type="submit">
</form>
Tim Bolton几乎做对了,尽管他正在检查值是否低于5,但他没有测试位数。我会这样做:
function isValidForm(){
var labels = $('form labels');
$(labels).each(function(){
var inputText = $(this).next();
if($(inputText).val().length < 6 || isNaN($(inputText).val())) {
$(inputText).css('color', 'red'); // you can do whatever you want to show the field is not properly filled
return false;
}
})
return true;
}
然后,在提交表格时,你所要做的就是:
$('form').submit(function(){
if(!isValidForm()){
alert('please fix the errors');
return false;
}
});
您将需要在label
上设置for
属性。您还需要为label
识别的输入设置一个ID。这应该用合适的钩子武装你,让你做你想做的事(或者至少设置得合适)。
使用您当前的设置,尝试:
<script>
$(document).ready(function(){
$('#submit').click(function(event) {
event.preventDefault();
$('label').each(function() {
var len = $(this).next().length;
if(len < 5) {
alert('Too Short!');
} else { $('#form').submit();
});
})
});
</script>
<form id="form">
<label>Test</label><input value="asdfassd1" type="text" class="check">
<label>Test</label><input value="1" type="text" class="check">
<label>Test</label><input value="1" type="text" class="check">
<label>6 digit</label><input value="1" type="text" class="check">
<label>6 digit</label><input value="1" type="text" class="check">
<label>Test</label><input value="1" type="text" class="check">
<input type="submit" id="submit">
</form>
label
的目的是通过id
:与表单相关元素相关联
<label for="digits">Enter Digits</label>
<input type="text" id="digits" />
有关标签,请参阅文档。假设所有的input
都应该有一个id
,如果它们有标签的话,请尝试以下操作:
$('#inputID').each(function() {
if (!$(this).val().match(/^'d{6,}$/)) {
alert('incorrect formatting!');
}
});
它根据正则表达式测试所选输入的值,以获得"所有数字,至少六个"。
- jsFiddle演示
我认为正则表达式是验证简单输入的最简洁和可移植的方法。
如果可能的话,找到一种简单的方法来区分需要验证的字段,比如Tim Bolton建议的元素上的ID属性,或者可能通过下面的CSS类(即"needs6"类):
<form>
<label>Test</label><input value="1" type="text" class="check">
<label>Test</label><input value="1" type="text" class="check">
<label>Test</label><input value="1" type="text" class="check">
<label>6 digit</label><input value="1" type="text" class="check needs6">
<label>6 digit</label><input value="1" type="text" class="check needs6">
<label>Test</label><input value="1" type="text" class="check">
<input type="submit" />
</form>
然后您的jQuery选择器变得简单多了(即$("input.needs6")
)。
一旦选择了输入,就有很多方法可以验证它们。就我个人而言,我会使用以下方法:
$(document).ready(function() {
var testFor6 = function () {
var allHave6 = true;
$("input.needs6").each(function () {
var input = $(this);
var value = input.val();
if (!value.match(/'d{6}/g)) {
allHave6 = false;
input.addClass('doesNotHave6');
} else {
input.removeClass('doesNotHave6');
}
});
return allHave6;
};
$('input[type="submit"]').click(function (e) {
var allHave6 = testFor6();
if (!allHave6) {
e.preventDefault(); //Cancel event-bubbling.
}
return allHave6; //Prevent form submission when false.
});
});
如果你想看到这一点,请将其弹出http://jsfiddle.net/并对其进行测试,尽管您可能希望将其与一些示例CSS类相结合以查看其工作情况。下面的示例。
.needs6 {background-color: yellow;}
.doesNotHave6 {background-color: red;}
希望这能有所帮助,
Pete
附录:
你是说空间吗。。。
<form>
<label>Test</label><input value="1" type="text" class="check">
<label>Test</label><input value="1" type="text" class="check">
<label>Test</label><input value="1" type="text" class="check">
<!-- here? --><label><!-- here? -->6 digit</label><!-- here? --><input value="1" type="text" class="check needs6" value="<!-- here? -->">
<label>6 digit</label><input value="1" type="text" class="check needs6">
<label>Test</label><input value="1" type="text" class="check">
<input type="submit" />
</form>
请澄清。
当然!
只需将输入循环函数更改为以下任意部分。。。
$("input.needs6").each(function () {
var input = $(this);
var value = input.val();
//You can use this to trim.
var trimmedValue = value.replace(/'s's*$/, '').replace(/^'s's*/, '');
//You can use this to find leading whitespace.
var hasLeadingSpaces = value.match(/^'s's*/, '');
//You can use this to find trailing whitespace.
var hasTrailingSpaces = value.match(/'s's*$/, '');
if (hasLeadingSpaces) {
//Do something
}
if (hasTrailingSpaces) {
//Do something
}
//Check original value
if (!value.match(/'d{6}/g)) {
allHave6 = false;
input.addClass('doesNotHave6');
} else {
input.removeClass('doesNotHave6');
}
//Check trimmed value
if (!trimmedValue.match(/'d{6}/g)) {
allHave6 = false;
input.addClass('doesNotHave6');
} else {
input.removeClass('doesNotHave6');
}
});
相关文章:
- 如何使用JQuery检查输入(电子邮件)字段是否包含特殊字符
- jsrender是否可以动态地呈现字段名
- j查询检查复选框是否被选中,然后向输入字段添加值
- JQuery:如何检查复选框是否被选中并向字段添加属性
- 检查以上表格字段是否正确填写
- jQuery字段验证-是否为空,以及正确的值
- Ember-自定义计算属性,用于检查是否存在所有依赖字段
- 如何判断文本输入字段dom节点是否*没有*带有javascript的选择
- Jquery验证字段是否包含逗号
- 是否可以在字段有效时触发事件(html5)
- 是否可以在Kendo网格中只显示来自Kendo数据源的某些字段,而在“;添加“;弹出窗口
- jQuery-用于检查是否有任何字段不为空,然后将所有字段设为必需字段的代码
- jQuery:检索日期选择器日期,检查是否在日期范围内,显示/隐藏字段
- 是否可以使find()和findOne()方法只返回模式字段
- jQuery - 检查输入字段是否保持不变
- 使用 jQuery 判断文件输入字段是否为空
- 如何知道字段是否由于字段级别安全性而被屏蔽
- jquery 每个循环检查是否至少填写了一个字段
- 验证密码字段是否为空
- Rally SDK 2 标签选择器是否有必填字段?对象没有方法'getContextPath'