【问题标题】:The most concise way to match multiple key to a single value? [duplicate]将多个键匹配到单个值的最简洁方法? [复制]
【发布时间】:2019-11-19 11:01:00
【问题描述】:

将多个键与 1 个值匹配的最简洁方法是什么?例如在 jQuery Validate 我有类似的东西:

$("#myform").validate({
  rules: {
    firstname: "required",
    middlename: "required",
    lastname: "required"
  },
  messages: {
    firstname: "Please fill in first name",
    middlename: "Please fill in middle name",
    lastname: "Please fill in last name"
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/additional-methods.js"></script>


<form id="myform">
  <div>
    <label for="firstname">First Name</label>
    <input type="text" id="firstname" name="firstname">
  </div>
  <div>
    <label for="middlename">Middle Name</label>
    <input type="text" id="middlename" name="middlename">
  </div>
  <div>
    <label for="lastname">Last Name</label>
    <input type="text" id="lastname" name="lastname">
  </div>
  <input type="submit" value="Search">
</form>

这很好,但我觉得重复firstname: "required"、middlename: "required"、lastname: "required" 是没有必要的,我怎样才能有多个匹配相同值的键可能像这样?

var names = {firstname, middlename, lastname};
$("#myform").validate({
  rules: {
    names: "required"
  },
  messages: {
    firstname: "Please fill in first name",
    middlename: "Please fill in middle name",
    lastname: "Please fill in last name"
  }
});

我知道我可以使用 for 循环,但我正在寻找最简洁的方式。

【问题讨论】:

    标签: javascript jquery jquery-validate


    【解决方案1】:

    自己使用$.each()想出了一个解决方案,它基本上是匹配具有相同值的不同键。

    var rule = "required",
        message = "Please fill in this field",
        fields = ["firstname", "middlename", "lastname"],
        rules = {},
        messages = {};
    
    // assign "required" to each key of fields 
    $.each(fields, function (index, value) {
      rules[value] = rule;
      messages[value] = message;
    });
    
    $("#myform").validate({
      rules: rules,
      messages: messages
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/jquery.validate.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.1/additional-methods.js"></script>
    
    <form id="myform">
      <div>
        <label for="firstname">First Name</label>
        <input type="text" id="firstname" name="firstname">
      </div>
      <div>
        <label for="middlename">Middle Name</label>
        <input type="text" id="middlename" name="middlename">
      </div>
      <div>
        <label for="lastname">Last Name</label>
        <input type="text" id="lastname" name="lastname">
      </div>
      <input type="submit" value="Search">
    </form>

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-10
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2011-03-21
    • 1970-01-01
    相关资源
    最近更新 更多