0

可能重复:
jQuery 中的空字段验证

我需要检测表单是否为空。我已经进行了客户端验证,有必填字段而不是必填字段,当有一个或多个必填字段时,这是(这些是)空的,发布按钮会启动客户端验证错误,这很好。当它们都不是强制性的时,我只需要禁用发布按钮,直到我插入一个值,当我写东西时启用发布按钮。但是如果我删除这些值,我无法检测表单是否为空或不重新禁用按钮!

$('#form .my_field').each(function() {
    $(this).data('oldVal', $(this).val());

    $(this).bind("propertychange keyup input paste change blur", function(event) {
        if ($(this).data('oldVal') != $(this).val()) {
            $('#post_button').button({
                disabled: false
            });
        }
    });
});

有了这个绑定,我可以检测到我何时在一个随意的表单字段中书写,但我不知道如何找到每个字段是否都是干净的。我尝试了很多条路,但它们把我引向了死胡同。也许是一个 10 小时的编程问题 :) 我尝试过某种

 if ($(this).val()=='')

,但对于某些字段(例如数据选择器)不起作用(我可以选择过多的多选---->:选项)

我想我必须将相同的事件绑定到一个(如果为空设置一个布尔标志)并检查所有布尔标志以确定它们是否都是真(或假)..任何提示?

4

1 回答 1

1

为什么不只使用一个else if

演示:http: //jsfiddle.net/dfAtX/

jQuery:

$('#form .my_field').each(function() {
    $(this).data('oldVal', $(this).val());

    $(this).bind("propertychange keyup input paste change blur", function(event) {

        if ($(this).data('oldVal') != $(this).val()) {
            $('#post_button').button({
                disabled: false
            });
        }
        else if ($(this).val() == $(this).data('oldVal')) { // Don't even bother checking the rest if this doesn't match
            var unchanged = 0;
            $('#form .my_field').each(function() {
                if ($(this).val() == $(this).data('oldVal')) {
                    unchanged++;
                }
            });

            if (unchanged == $('#form .my_field').length) {
                $('#post_button').button({
                    disabled: true
                });
            }
        }
    });
});​
于 2012-10-30T18:24:36.963 回答