0

我正在尝试使用 jquery 检查每个输入字段是否已被填写。如果是的话,我想在表格周围做一个绿色边框。

这是我的方法:

if($('input:text[value=""], textarea[value=""]').length == 0){
    alert("DONE");
}

悬停 value="" -Selector 不起作用。

似乎值属性仅包含输入字段的默认值,但不包含用户插入的实际内容 - 根据萤火虫。

此命令提醒我实际内容:

$('input:text[value!=""]').each(function(){
    alert($(this).val());
});

我的问题:实际的输入字段内容存储在哪里?如果有空字段,我如何使用 jQuery 进行有效检查?

4

5 回答 5

1

你是对的,属性选择器只适用于属性真正具有的值。稍后,改变输入的值只会改变 DOM 元素的内部状态。

实际的输入字段内容存储在哪里?

您可以通过valueDOM 元素的属性访问该值elementNode.value

如果有空字段,我如何使用 jQuery 进行有效检查?

您可以使用.filter

$('input').filter(function() {
    return !this.value;
});
于 2013-07-16T08:24:43.430 回答
1

验证输入的一种简洁方法是将验证规则附加到元素上,以便脚本查找和验证。

要使字段成为必填项:

<input type="text" data-validate="required" />

你的脚本:

$('[data-validate]').each(function() {
    var rule = $(this).attr('data-validate'), value = $(this).val();

    switch (rule) {
        case 'required':
            if (!value) {
                alert('Field invalid!');
            }
        break;
    }
});

它对我来说效果很好。

您可以通过仅选择特定元素类型或特定元素(例如表单)的子元素来提高效率。

于 2013-07-16T08:31:06.420 回答
0

您可以尝试.filter()像这样使用:

var empty = $('input:text').filter(function(){ return $(this).val() == "" }).length;

if(empty > 0){
    alert("There are "+empty+" fields which have not been filled out");
}
于 2013-07-16T08:25:41.647 回答
0

如果您不愿意使用 Jquery 验证,我的方法。

为您的每个输入字段指定一个类,然后用于Jquery class selector测试这些字段是否都已填写。您甚至可以将其用于下拉菜单。

于 2013-07-16T08:26:07.897 回答
0

你应该使用这个结构:

var incomplete = $('form :input').filter(function() {
  return $(this).val() == '';
});

if (incomplete) {
  alert('Please fill all fields!');
}

:input选择器选择所有输入、文本区域、选择和按钮元素。

阅读:http ://api.jquery.com/input-selector/

于 2013-07-16T08:28:45.407 回答