我正在尝试验证大型联系表单。当用户忘记所需的输入字段时,我用默认文本填充空变量。
我当前的解决方案使用了九个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);
}
答案 0 :(得分:12)
您可以创建一个包含表单字段的dict,以及缺少时显示的字符串,并遍历列表。此外,正如另一个响应所示,将缺少的错误消息设置为结束并仅执行一次;此外,如果您要在每种情况下执行相同的操作,则不需要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);
答案 1 :(得分:1)
我可以看到代码示例有一些重复
#include <stdio.h>
enum { MAXNM = 64, MAXLN = 512 }; /* max name & line constants */
int main (int argc, char **argv) {
int id;
char name[MAXNM] = "",
line[MAXLN] = "",
*p = line; /* pointer to line to walk string */
FILE *fp = argc > 1 ? fopen (argv[1], "r") : stdin;
if (!fp) { /* validate file open for reading */
fprintf (stderr, "error: file open failed '%s'.\n", argv[1]);
return 1;
}
while (fgets (line, sizeof line, fp)) /* read each line / validate */
{
int offset = 0; /* number of char processed */
while (sscanf (p, "%d,%63[^0-9]%n", &id, name, &offset) == 2) {
printf ("%3d %s\n", id, name);
p += offset; /* advance to next id,name */
}
}
if (fp != stdin) fclose (fp); /* close file if not stdin */
return 0;
}
这只能放在最后。因此,您只需要构建缺少变量的内容。
$("xehases#xehases").html(missing);
答案 2 :(得分:0)
像这样......
var fields = ['fname', 'lname', 'email']; // ...and so on
var errField = $('#xehases');
function submit(){
fields.forEach(function(field){
var domElem = $('#' + field);
if (domElem.val() === '') {
errField.html(errField.text() + ' ' + domElem.attr('err-msg'));
}
});
}
&#39; ERR-MSG&#39;可能是用于丢失消息的输入元素的属性。