jQuery 1.5.1停止一个功能工作......任何想法?

时间:2011-03-30 14:11:58

标签: jquery

人民,

我最近从1.4.1升级到1.5.1以使用一些更新,但它已经停止某些功能因某些原因而起作用。

下面的函数将确认按钮(x)作为参数,并检查所有非可选的输入字段是否包含其中的某些内容。

如果一切正常,它会继续,如果出现错误,则在完成必要的数据之前,不应该让您关闭该框。

function checkAllInputs(x){
        var missingRequired = x.closest('.container').find('input[value=""]').not('.jsOptional');
        if (missingRequired.length) {
            // DO NOT CLOSE THE BOX
        }
        else {
            x.closest('.container').hide();
            // CLOSE THE BOX and continue
        }
    };

但此时 - 无论输入是否丢失,该按钮仍会关闭该框。

有任何想法,还是需要更多信息?

谢谢, 凯文

1 个答案:

答案 0 :(得分:2)

我可以通过使用只有文本输入的简单表单进行测试来复制问题(为简单起见)。当我添加:text伪选择器或[type=text]属性过滤器时,它可以正常工作。例如:

$("form").submit(function() {
    var missingRequired = $(this).find('input:text[value=""]').not('.jsOptional');
    alert(missingRequired.length);
    if (missingRequired.length) {
        alert(missingRequired.length);
        alert("missing!");
    }
    else {
        alert("none missing!");
    }
    return false;
});

测试标记:

<form>
    <input class="jsOptional" type="text"/>
    <br />
    <input type="text" />
    <br />
    <input type="text" />
    <input type="submit"/>
</form>

You can try it here.(删除:text,它会中断,测试一下:)

我建议采用以下更强大的方法来确定哪些输入为空:

var missingRequired = $(this).find('input:text')
                             .not('.jsOptional')
    .filter(function() {
       return $.trim($(this).val()) == ""; 
    });
if (missingRequired.length) {
    ...

问题似乎与未能指定输入类型有关 - 也就是说,它可能是许多其他事情,如果没有看到你的标记就很难知道。我想我只是觉得无聊。