javascript - 表单验证的 jQuery 设置

标签 javascript jquery validation settings

我正在构建一个基本的 jQuery 表单验证器。下面的代码只是为了验证名称。我有几个函数来验证邮件、密码、信用卡、日期等。我希望用户能够轻松编辑错误消息和类。假设用户想要更改类“错误”或“成功”的名称。现在,用户需要搜索并替换代码中显示“错误”或“成功”的所有位置。

有没有办法在代码顶部使用数组或对象来编辑每个 if 语句的错误消息并应用类?

类似于此处显示的内容:http://learn.jquery.com/plugins/basic-plugin-creation/#accepting-options (但在代码顶部,函数之外)。或者我可以使用相同的方法但像这样输入(在函数之外,在文件顶部)?

var settings = $.extend({
  color: "#556b2f",
  errorClass: "error"
}, options );

我还希望用户能够将 ID 和类直接添加到表单元素,并在设置“required”中键入“true”,以便需要表单元素。有什么好的方法可以做到这一点吗?

var name = $("[data-name]"); 
var nameMsg = $("#nameMsg");

name.on("blur", function() { $(this).validateName() });

$.fn.validateName = function() { 
  if(name.val().length < 5) { 
      name.removeClass("success") 
          .addClass("error"); 

      nameMsg.removeClass("success") 
             .addClass("error") 
             .text("Not that short, at least 5 characters.");

      return false; 
  } else { 
      name.removeClass("error") 
          .addClass("success"); 

      nameMsg.removeClass("error") 
             .addClass("success")
             .html("Correct");

      return true;
  }
}

解决方案

var defaults = {
    errorClass: "error",
    successClass: "success",
    successMessage: "<i class='fa fa-check-circle'></i>",
    errorMessageName: "Not that short, at least 5 characters.",
};

var settings = $.extend({}, defaults);

特别感谢Martin Adámek 的帮助!

最佳答案

$.extend 只是创建与两个参数的值合并的新对象,您可以使用它来扩展用户给定的默认选项对象(任何您想要的地方)。

我不确定我的理解是否正确,这是你想要的吗?

var defaults = { // maybe you do not need extend at all? 
  errorClass: "error",
  successClass: "success",
  messageError: "Not that short, at least 5 characters.",
  messageCorrect: "Correct"
};

var name = $("[data-name]"); 
var nameMsg = $("#nameMsg");

name.on("blur", function() { $(this).validateName() });

$.fn.validateName = function() { 
  var userOpts = {...}; // you can store it eg in data attribute on the element
  // extend options with user given values
  options = $.extend(defauts, userOpts);

  if(name.val().length < 5) { 
      name.removeClass(options.successClass) 
          .addClass(options.errorClass); 

      nameMsg.removeClass(options.successClass) 
             .addClass(options.errorClass) 
             .text(options.messageError);

      return false; 
  } else { 
      name.removeClass(options.errorClass) 
          .addClass(options.successClass); 

      nameMsg.removeClass(options.errorClass) 
             .addClass(options.successClass)
             .html(options.messageCorrect);

      return true;
  }
}

用户给定的选项将存储为 JSON 字符串(以允许与默认选项合并),因此您需要首先调用 JSON.parse() 。

编辑:

数据属性中的选项 JSON 对象示例:

HTML:

<input type="text" data-options='{"messageCorrect": "Bingo! That is the right choice!", "errorClass": "my-error-class"}' ...>

然后在 $.fn.validateName()你只需要做:

var userOpts = JSON.parse($(this).data('options'));

关于javascript - 表单验证的 jQuery 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30321361/

相关文章:

javascript - Masonry 插件图像优于其他图像

javascript - 工具提示在列表中无法正常工作

javascript - Vue CLI "index.html"内容

javascript - 有没有办法告诉用户按下提交时没有互联网连接?

python - 验证损失增加和恒定的训练精度 1D cnn

javascript - 在 Javascript 中,如果 if 语句不返回任何内容,则不执行任何操作

javascript - Bootstrap Modal 在 IE 中不起作用

ruby - 我可以在 Rspec 测试中设置 "it"的值吗?

java - 使用 RESTful API 进行自定义验证

javascript - 如果按钮被按下 10 秒按钮功能?