jQuery:如何检查输入的每个部分是否完整?
我正在尝试构建一个表单,它将混合输入,主要是文本和选择。我想在x个输入完成后启动ajax。我尝试了.change功能,但遇到了IE的问题 例如:jQuery:如何检查输入的每个部分是否完整?,jquery,input,blur,focusout,Jquery,Input,Blur,Focusout,我正在尝试构建一个表单,它将混合输入,主要是文本和选择。我想在x个输入完成后启动ajax。我尝试了.change功能,但遇到了IE的问题 例如: <div id='section'> <input type=text> <input type=text> <select> <option></option> <option></option>
<div id='section'>
<input type=text>
<input type=text>
<select>
<option></option>
<option></option>
</select>
<select>
<option></option>
<option></option>
</select>
</div>
我不关心输入的填写顺序,我只想在填写完所有4个后立即触发一个操作,在我的例子中,是一个带有这些输入值的ajax调用
一些浏览器和jQuery信息。
我必须支持IE6+,每个主要浏览器都有3个版本。
jQuery 1.6.2一种更简单、更一致的方法是绑定变更事件,因为该事件将不偏向表单元素的类型 HTML: JQuery: 演示:
需要考虑的事项:此代码假定表单字段将是父节点的直接子节点。如果您更改了结构,只需注意JQuery选择器是如何抓取映射函数的表单字段的。一种更简单、更一致的方法是绑定更改事件,因为该事件不会对表单元素的类型产生偏见 HTML: JQuery: 演示: 需要考虑的事项:此代码假定表单字段将是父节点的直接子节点。如果您更改了结构,只需注意JQuery选择器是如何抓取映射函数的表单字段的。请告诉我正确的方向 这是一个注册表单,它有三个不同的部分,都由AJAX操作,DOM结构变得相当复杂 我不得不从两个不同的方向来处理它 首先,我必须知道每个部分的输入数量
var firstinputs = $('#firstFieldCollection input[type="text"], select).length;
这给出了我需要的输入数量,不包括jQuery.UI的日历查找按钮
我做的第二件事是.change事件,因为我发现特定的输入将在IE6+中工作。看起来是这样的:
$('#firstFieldCollection input,select).change(function() {
var itemcount = 0;
$('#personalFieldsCollection input[type="text"], select').each(function(i,v) {
if(v.value.length > 0) {
itemcount++;
}
)};
if(itemcount===firstinputs) {
//Do something once all inputs are filled in.
}
});
这允许我捕获输入的第一部分,只允许AJAX在字段填充后启动,然后AJAX返回下一部分的数据,然后使用。引导我朝正确的方向前进
这是一个注册表单,它有三个不同的部分,都由AJAX操作,DOM结构变得相当复杂
我不得不从两个不同的方向来处理它
首先,我必须知道每个部分的输入数量
var firstinputs = $('#firstFieldCollection input[type="text"], select).length;
这给出了我需要的输入数量,不包括jQuery.UI的日历查找按钮
我做的第二件事是.change事件,因为我发现特定的输入将在IE6+中工作。看起来是这样的:
$('#firstFieldCollection input,select).change(function() {
var itemcount = 0;
$('#personalFieldsCollection input[type="text"], select').each(function(i,v) {
if(v.value.length > 0) {
itemcount++;
}
)};
if(itemcount===firstinputs) {
//Do something once all inputs are filled in.
}
});
这使我能够捕获输入的第一部分,只允许AJAX在字段填充后启动,然后AJAX返回下一部分的数据,然后使用。Define complete。用户可能希望选择第一个元素,这不会触发更改,因为默认情况下已选择该元素。定义完成。用户可能希望选择第一个元素,这不会触发更改,因为默认情况下已选择该元素。
$('#firstFieldCollection input,select).change(function() {
var itemcount = 0;
$('#personalFieldsCollection input[type="text"], select').each(function(i,v) {
if(v.value.length > 0) {
itemcount++;
}
)};
if(itemcount===firstinputs) {
//Do something once all inputs are filled in.
}
});