根据http://docs.jquery.com/Plugins/Validation,“form”标签是必要的,以便进行验证。就我而言,我没有表格标签。如何在单击“按钮”类型控件
时验证(必填字段)我的文本框答案 0 :(得分:2)
为什么不添加表单标签?如果它是输入,那么它通常应该是表单的一部分。
答案 1 :(得分:1)
你总是可以用假表格包装它并验证它。
var $textbox = $("#textbox");
$("<form>").append($textbox).validate();
但请注意,在大多数情况下,这应该意味着我们错误地处理了某些事情,并且我会考虑以任何形式提交的每个元素的表单(无论是通过标准的GET / POST,AJAX等) )。
答案 2 :(得分:1)
我知道,这是一个很老的问题,无论如何,我遇到了几乎相同的问题:我已定义了表格:
<form id="some-form-id"></form>
而且在文档中我有这样的输入:
<input type="text" form="some-form-id" />
jQuery验证器无法验证这一点,因为元素不在表单中,所以我进行了小更新: 有方法元素加载要验证的元素,我将其编辑为此文本的版本。我添加了不在表单内的加载项,我加载到变量 outForm 。仅当表单具有属性 id 时才会加载此项目。我测试它,它的工作原理。我希望这会对某人有所帮助。
elements: function () {
var validator = this,
rulesCache = {};
// select all valid inputs inside the form (no submit or reset buttons)
var inForm = $(this.currentForm)
.find("input, select, textarea")
.not(":submit, :reset, :image, [disabled], [readonly]")
.not(this.settings.ignore)
.filter(function () {
if (!this.name && validator.settings.debug && window.console) {
console.error("%o has no name assigned", this);
}
// select only the first element for each name, and only those with rules specified
if (this.name in rulesCache || !validator.objectLength($(this).rules())) {
return false;
}
rulesCache[this.name] = true;
return true;
});
var formId = $(this.currentForm).attr('id');
if(typeof formId == 'undefined')
return inForm;
var outForm = $("input[form='"+formId+"'], select[form='"+formId+"'], textarea[form='"+formId+"']")
.not(":submit, :reset, :image, [disabled], [readonly]")
.not(this.settings.ignore)
.filter(function () {
if (!this.name && validator.settings.debug && window.console) {
console.error("%o has no name assigned", this);
}
// select only the first element for each name, and only those with rules specified
if (this.name in rulesCache || !validator.objectLength($(this).rules())) {
return false;
}
rulesCache[this.name] = true;
return true;
});
return $.merge(inForm,outForm);
},