【问题标题】:Prevent submission when fields are blank and display error message字段为空时阻止提交并显示错误消息
【发布时间】:2012-10-26 02:05:46
【问题描述】:

我的网站上有很多不同的表格。我想使用 Jquery 来:

  • 如果任何文本字段为空,则显示错误消息
  • 使用 CSS 突出显示空白字段
  • 在用户填写之前阻止提交表单。

所有不同的表单都链接到同一个 Jquery 脚本,因此我必须确保我的 jquery 不会对特定表单进行任何引用(否则,我将不得不为每个表单编写不同的脚本)。

我认为最好的方法是使用each function 循环输入字段以检查它们是否为空白,然后使用event.preventDefault(); 阻止表单提交并使用addClass 突出显示字段.

每个功能都有效,但 preventdefault/addclass 似乎不起作用。我不确定我做错了什么。这是我的代码:(JSFiddle 版本)

$(document).ready(function () {

$('.names').submit(function(){  
          $('.names input[type=text]').each(function(n,element){  
            if ($(element).val()=='') {  
                event.preventDefault();
              alert('Some fields are blank (highlighted in red). Please fill them in');  
              ($element).addClass("error");
              return false;  
            }  
          });  
          return true;  
        });

});

我怎样才能让它工作?是否可以将错误类应用于输入字段的父 <p> 标签而不是字段本身?

【问题讨论】:

  • 您所做的几乎所有事情都可以使用 jQuery.validate 插件完成,为什么要重新发明轮子?

标签: javascript jquery forms


【解决方案1】:

event 未定义。在提交回调中捕获参数并在其上调用 preventDefault:

$(document).ready(function () {
    $('.names').submit(function (e) {
        $(this).find('input[type=text]').each(function (n, element) {
            if ($(element).val() == '') {
                e.preventDefault();
                alert('Some fields are blank (highlighted in red). Please fill them in');
                $(element).parent().addClass("error");

                return false;
            }
        });

        return true;
    });
});

注意:

  1. ($element) 也未定义,你的意思是$(element)
  2. 要将错误类添加到父类,请使用$(element).parent()
  3. 如果您有多个表单,这将不起作用。使用$(this).find('input[...]') 而不是$('.names input[...]')。这样,您只需验证您提交的表单。
  4. 这是working fiddle

【讨论】:

  • 您可以执行以下操作if (!$(element).val()) { 这将检查任何空值
  • @alexn 这行得通,只是它只突出显示第一个空白字段。是否可以突出显示所有空白字段?我想我可以通过将 addClass 向下移动并更改选择器来使其工作(请参阅:jsfiddle.net/big_smile/mSZSK/2),但是当我这样做时,没有任何亮点!
  • @alexn 经过研究,我认为我需要使用 filter();突出显示所有空字段 (api.jquery.com/filter)。我已经尝试过了,但我不能让它工作:jsfiddle.net/big_smile/mSZSK/6。我将不胜感激任何指示!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
相关资源
最近更新 更多