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

标签 jquery input blur focusout

我正在尝试构建一个具有混合输入(主要是文本和选择)的表单。我想在 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 个输入完成后执行某些操作。正如我之前所说,.change() 在处理 select 时遇到了 IE 问题。

将所有输入与模糊/焦点绑定(bind)绑定(bind),然后检查所有输入是否完整,是否有效,或者是否有更好的方法?

我现在有

$('#section input').bind($.browser.msie ? 'focusout' : 'blur', function(e) {
// blur also has issues with IE so look for focusout in IE
console.log($(this));
}

我不关心输入的填写顺序,我只想在所有 4 个输入都填写完毕后立即触发一个操作,在我的例子中是使用这些输入值进行 ajax 调用。

一些浏览器和 jQuery 信息。 我已经支持IE 6+了,而且各个主流浏览器下3个版本。 jQuery 1.6.2

最佳答案

Alien's answer引导我走向正确的方向。

这是一个注册表单,它具有三个不同的部分,全部由 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 返回下一部分的数据以进行处理。

关于jQuery:如何检查输入的每个部分是否完整?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7932821/

相关文章:

javascript - 计算 html 列表中的直接子项

c# - 在 C# 中根据输入对字符串进行分类

javascript - meteor 使用表单值插入记录

Android:在 OpenGL 1.1 中使用混合创建模糊纹理

javascript - 使用 CKEditor、BLOB 字段和 Rails 4 自定义上传图像

javascript - 从另一个域获取 iframe 的内容

ios - 在 Swift map 上的 MKOverlay 中添加模糊 View

iphone - 如何模糊除 2 个节点之外的所有内容。 Spritekit( swift )

javascript - 获取多个类选择器以在 jQuery 中进行选择

c - 我在从文件中获取数字时遇到问题。函数 fscanf 只读取字符串。 8