jQuery:如何检查输入的每个部分是否完整?

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>

我正在尝试构建一个表单,它将混合输入,主要是文本和选择。我想在x个输入完成后启动ajax。我尝试了.change功能,但遇到了IE的问题

例如:

<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.
    }
});