javascript - 如何减少多个 if 语句的代码

标签 javascript jquery performance optimization

我正在尝试验证一个大型联系表单。当用户忘记必填输入字段时,我会用默认文本填充空变量。

我目前的解决方案使用九个 if声明。有没有更好的方法来使用更少的代码

html: <xehases class="" id="xehases"></xehases>

var onoma = $("#fname").val();
var eponimo = $("#lname").val();
var email = $("#email").val();
var diefthinsi = $("#address").val();
var poli = $("#city").val();
var xora = $("#country").val();
var katigoriaDiafimisis = $("#AdCategory").val();
var plano = $("#plan").val();
var istoselida = $("#website").val();
var epixirisi = $("#company").val();
var minima = $("#message").val();

var missing = '  ';

if (onoma === "") {
  missing += 'Όνομα ';
  $("xehases#xehases").html(missing);
} else {
  $("xehases#xehases").html(missing);
}

if (eponimo === "") {
  missing += 'Επώνυμο ';
  $("xehases#xehases").html(missing);
} else {
  $("xehases#xehases").html(missing);
}

if (email === "") {
  missing += 'email ';
  $("xehases#xehases").html(missing);
} else {
  $("xehases#xehases").html(missing);
}

if (poli === "") {
  missing += 'Πόλη ';
  $("xehases#xehases").html(missing);
} else {
  $("xehases#xehases").html(missing);
}

if (xora === "please choose a category") {
  missing += 'Χώρα ';
  $("xehases#xehases").html(missing);
} else {
  $("xehases#xehases").html(missing);
}

if (plano === "") {
  missing += 'Πλάνο ';
  $("xehases#xehases").html(missing);
} else {
  $("xehases#xehases").html(missing);
}

if (katigoriaDiafimisis === "") {
  missing += 'Κατηγορία Διαφήμισης ';
  $("xehases#xehases").html(missing);
} else {
  $("xehases#xehases").html(missing);
}

if (epixirisi === "") {
  missing += 'Επιχείρηση ';
  $("xehases#xehases").html(missing);
} else {
  $("xehases#xehases").html(missing);
}

if (minima === "") {
  missing += 'Μήνυμα ';
  $("xehases#xehases").html(missing);
} else {
  $("xehases#xehases").html(missing);
}

最佳答案

您可以创建一个字典,其中包含表单字段和缺少时显示的字符串,并遍历列表。另外,正如另一个响应所指出的,将丢失的错误消息设置到最后并且只执行一次;此外,如果您要在每种情况下做同样的事情,则不需要 if/else。编写类似这样的代码:

// key is form input, value is displayed in missing field message
const fieldsDict = {
    "fname": "Όνομα",
    "lname": "eponimo",
    // ...
};

let missing = "";

Object.keys(fieldsDict).forEach((field) => {
    if ($("#" + field).val() === "") {
        missing += fieldsDict[field] + " ";
    }
});

$("xehases#xehases").html(missing);

关于javascript - 如何减少多个 if 语句的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46021119/

相关文章:

javascript - 我怎样才能在 HTML 中运行它?

使用 bootstrap 3 形式的 Javascript/jQuery 链排序

javascript - 如何自动测试网页中的元素是否按预期呈现

javascript - 我可以优化这个 jQuery 'toggle' 图像源函数吗?

java - 使用自己的 HashSet.add() 实现

javascript - 对象数组中的 Lodash/下划线 : Check for a value within an array,

javascript - 此javascript下拉选择功能有什么问题?

javascript - CSS Add Class active 以在页面重新加载后阻止

javascript - 我可以在 jQuery 中将 $(this) 与 css 选择器一起使用吗?

java - "For"循环,逐渐变慢