jQuery检测空表怎么样?

时间:2012-10-30 18:05:08

标签: jquery jquery-ui validation

  

可能重复:
  empty field validation in jquery

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

$('#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()=='')

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

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

1 个答案:

答案 0 :(得分: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
                });
            }
        }
    });
});​