gpt4 book ai didi

javascript - 'onblur' 事件,遍历表单的所有字段,不给用户输入数据的机会

转载 作者:行者123 更新时间:2023-11-28 04:59:55 24 4
gpt4 key购买 nike

我正在写联系表。我的头部有两个 JavaScript 函数(稍后我会移动它们,但这是另一个问题)。

onblur 事件的第一个函数 Validate() 有效,但不是我想要的那样。第二个函数 formValidate() 用于 onsubmit 事件。

我在 JavaScript 函数中有一个 switch 语句,用于 HTML onblur 事件。

JavaScript 代码:

<head>
<script type="text/javascript">
function Validate()
{
// Create array containing textbox elements
var input = [document.getElementById('fname'), document.getElementById('lname'), document.getElementById('email1'), document.getElementById('email12'), document.getElementById('message')];

// Loop through each element to see if value is empty
for (var i = 0; i<input.length; i++)
{
if (input[i].value == '')
{
switch( input[i].id){
case 'fname':
alert ('enter you first name');
break;

case 'lname' :
alert ('enter your last name');
break;

case 'email1':
alert ('enter your email address');
break;

case 'email2':
alert ('enter your email address');
break;

case 'message':
alert ('write your message');
break;
}
}
}
}

function formValidate()
{
// Create array containing textbox elements
var inputs = [document.getElementById('fname'), document.getElementById('lname'), document.getElementById('email1'), document.getElementById('email2'), document.getElementById('message')];
var error;

// Loop through each element to see if value is empty.
for(var i = 0; i<inputs.length; i++)
{
if(inputs[i].value == '')
{
error = 'Please complete all fields.';
alert(error);
return false;
}
}
}
</script>
</head>

HTML:

<form onsubmit="return formValidate()"  action="mailto:admin@sfasc.com.au" method="post"  id="contactForm" >
<fieldset>
<dl>
<dt> First Name:</dt>
<dd>
<input class="input" type="text" name="fname" id="fname" onblur="Validate()" />
</dd>
<dt> Last Name:</dt>
<dd>
<input class="input" type="text" name="lname" id="lname" onblur="Validate()"/>
</dd>
<dt> Email Address:</dt>
<dd>
<input class="input" type="text" name="email1" id="email1" onblur="Validate()"/>
</dd>
<dt> Email Address:</dt>
<dd>
<input class="input" type="text" name="email2" id="email2" onblur="Validate()"/>
</dd>
<dt> Message:</dt>
<dd>
<textarea name="address" id="address" rows="10" cols="10" onblur="Validate()"></textarea>
</dd>
<dd>
<input type="submit" value="submit" name="submit" />
</dd>
</dl>
</fieldset>
</form>

代码有效,除了这个:当我点击一个字段时,我收到以下警告:

JavaScript alert

如果我单击“阻止弹出窗口”,警报将完全停止。如果我单击“确定”,它将转到下一个字段,例如从 fname 到 lname,并继续遍历这些字段,从而阻止用户输入任何数据。

我该如何解决这个问题?

最佳答案

我想这就是你想要的:

Demo

不是验证所有关于模糊的输入,而是验证离开焦点的那个。为此,我已将元素传递给 HTML 内联代码中的 Validate(this)。您还有一些元素 ID 问题(例如,没有消息字段)。我还添加了一个 .focus() 调用,以在输入无效时保持焦点。

function Validate(elem) {
// create array containing textbox elements
var input = [document.getElementById('fname'), document.getElementById('lname'), document.getElementById('email1'), document.getElementById('email2'), document.getElementById('message')];

for (var i = 0; i < input.length; i++)
// loop through each element to see if value is empty
{
if (input[i].value == '' && elem.id == input[i].id) {
switch (input[i].id) {

case 'fname':
alert('enter you first name');
break;
case 'lname':
alert('enter your last name');
break;
case 'email1':
alert('enter your email address');
break;
case 'email2':
alert('enter your email address');
break;
case 'message':
alert('write your message');
break;
}

elem.focus();
}
}
}

我不得不说,虽然很多 alert() 非常讨厌,但如果您在每个文本框旁边显示一个带有错误消息的 span 会好得多。

关于javascript - 'onblur' 事件,遍历表单的所有字段,不给用户输入数据的机会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17089544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com