验证表单,如果用户没有在字段中输入文本,则将字段名称添加到名为flag的数组中,然后函数errormsg在输入字段中插入文本,让他们知道他们忘记填写领域。 它可以工作但只有大约三毫秒,任何想法为什么?
var flag = [];
function validar(form) {
if (form.name.value == "") {
flag.push("name");
}
if (form.email.value == "") {
flag.push("email");
}
if (form.message.value == "") {
flag.push("message");
}
errorMsg(flag);
flag.length = 0;
}
function errorMsg(flag) {
for (var i = 0; i < flag.length; i++) {
var errorname = document.getElementById(flag[i]);
errorname.value += "You Must Enter " + flag[i];
}
}
<form onsubmit="return validar(this)">
<label for="name">Nombre</label><br>
<input type="text" name="name" id="name"><br>
<label for="email">Email</label><br>
<input type="text" name="email" id="email"><br>
<label for="message">Mensaje</label><br>
<textarea name="message" id="message"></textarea><br>
<button type="submit" name="button">Enviar</button>
</form>
答案 0 :(得分:1)
您需要检查JobIntentService
中是否有任何元素 - 如果有,请调用flag
以阻止表单提交。为此,您还需要引用提交事件(不表单本身)。内联处理程序与preventDefault()
一样糟糕,因此请在Javascript中附加侦听器。您还可以在每次调用eval
时创建新的flag
数组,而不是每次都将其长度手动重置为validar
:
0
const form = document.querySelector('form');
form.addEventListener('submit', validar);
function validar(event) {
var flag = [];
if (form.name.value == "") {
flag.push("name");
}
if (form.email.value == "") {
flag.push("email");
}
if (form.message.value == "") {
flag.push("message");
}
if (flag.length > 0) {
errorMsg(flag);
event.preventDefault();
}
}
function errorMsg(flag) {
for (var i = 0; i < flag.length; i++) {
var errorname = document.getElementById(flag[i]);
errorname.value += "You Must Enter " + flag[i];
}
}
请注意,通过向<form>
<label for="name">Nombre</label><br>
<input type="text" name="name" id="name"><br>
<label for="email">Email</label><br>
<input type="text" name="email" id="email"><br>
<label for="message">Mensaje</label><br>
<textarea name="message" id="message"></textarea><br>
<button type="submit" name="button">Enviar</button>
</form>
个问题提供input
属性,不需要Javascript,这会更容易:
required