在字段中输入有效电子邮件时显示 div 内容
Show div contents when a valid email is entered in field
所以我试图仅在输入有效电子邮件地址时才显示表单。
<p>Email:</p>
<input name="User_Email" type="text"/>
<div id="outform">
<p>Company Name:</p>
<input type="text" name="CompanyName"/>
<p>Website:</p>
<input type="text" name="Website" />
<input type='submit'>
</div>
我首先得到表单的其余部分,如果字段中有值,我会显示:
<script>
$('input[name=User_Email]').keyup(function(){
if($(this).val().length)
$('#outform').show();
else
$('#outform').hide();
});
</script>
按预期工作,然后我尝试了这个我无法开始工作:
<script>
if $('input[name=User_Email]').is(':valid') {
$('#outform').show();
else
$('#outform').hide();
}
</script>
如果有人能帮助我理解这没有达到 .is(':valid') 子句,我们将不胜感激。
替换你的html。
<input name="User_Email" type="email" required />
if(!(/^(([^<>()\[\]\.,;:\s@"]+(\.[^<>()\[\]\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(this.User_Email))){
this.show = true;
}
使用上面的模式并显示 div
if this.show == true
;
匹配您输入的模式(电子邮件)
<script>
$('input[name=User_Email]').keyup(function(){
var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
if($(this).val().match(pattern))
$('#outform').show();
else
$('#outform').hide();
});
</script>
首先,你应该将required
属性添加到input
像这样
<input name="User_Email" type="text" required/>
您可以阅读更多详细信息https://css-tricks.com/almanac/selectors/v/valid/
其次,你这里的语法不正确line 1
if $('input[name=User_Email]').is(':valid') {
$('#outform').show(); // line 1
else // line 2
$('#outform').hide(); // line 3
} // line 4
它应该在 line 1
之后立即关闭,而不是 line 4
这里
if $('input[name=User_Email]').is(':valid') {
$('#outform').show(); } // line 1
else // line 2
$('#outform').hide(); // line 3
// line 4
在下面进行现场演示以检查结果。
已更新
将电子邮件字段的类型从 text
更改为 email
input name="User_Email" type="email" required/>
你也可以像rneviu's answer
一样使用Regex
function validateEmail(email) {
var re = /^(([^<>()\[\]\.,;:\s@"]+(\.[^<>()\[\]\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
// Should hide default
$('#outform').hide();
$('input[name=User_Email]').keyup(function(){
var isValid = $(this).is(':valid') && validateEmail($(this).val());
if (isValid)
$('#outform').show();
else
$('#outform').hide();
});
function validateEmail(email) {
var re = /^(([^<>()\[\]\.,;:\s@"]+(\.[^<>()\[\]\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Email:</p>
<input name="User_Email" type="email" required/>
<div id="outform">
<p>Company Name:</p>
<input type="text" name="CompanyName"/>
<p>Website:</p>
<input type="text" name="Website" />
<input type='submit'>
</div>
所以我试图仅在输入有效电子邮件地址时才显示表单。
<p>Email:</p>
<input name="User_Email" type="text"/>
<div id="outform">
<p>Company Name:</p>
<input type="text" name="CompanyName"/>
<p>Website:</p>
<input type="text" name="Website" />
<input type='submit'>
</div>
我首先得到表单的其余部分,如果字段中有值,我会显示:
<script>
$('input[name=User_Email]').keyup(function(){
if($(this).val().length)
$('#outform').show();
else
$('#outform').hide();
});
</script>
按预期工作,然后我尝试了这个我无法开始工作:
<script>
if $('input[name=User_Email]').is(':valid') {
$('#outform').show();
else
$('#outform').hide();
}
</script>
如果有人能帮助我理解这没有达到 .is(':valid') 子句,我们将不胜感激。
替换你的html。
<input name="User_Email" type="email" required />
if(!(/^(([^<>()\[\]\.,;:\s@"]+(\.[^<>()\[\]\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(this.User_Email))){
this.show = true;
}
使用上面的模式并显示 div
if this.show == true
;
匹配您输入的模式(电子邮件)
<script>
$('input[name=User_Email]').keyup(function(){
var pattern = /^\w+@[a-zA-Z_]+?\.[a-zA-Z]{2,3}$/;
if($(this).val().match(pattern))
$('#outform').show();
else
$('#outform').hide();
});
</script>
首先,你应该将required
属性添加到input
像这样
<input name="User_Email" type="text" required/>
您可以阅读更多详细信息https://css-tricks.com/almanac/selectors/v/valid/
其次,你这里的语法不正确line 1
if $('input[name=User_Email]').is(':valid') {
$('#outform').show(); // line 1
else // line 2
$('#outform').hide(); // line 3
} // line 4
它应该在 line 1
之后立即关闭,而不是 line 4
这里
if $('input[name=User_Email]').is(':valid') {
$('#outform').show(); } // line 1
else // line 2
$('#outform').hide(); // line 3
// line 4
在下面进行现场演示以检查结果。
已更新
将电子邮件字段的类型从 text
更改为 email
input name="User_Email" type="email" required/>
你也可以像rneviu's answer
一样使用Regex
function validateEmail(email) {
var re = /^(([^<>()\[\]\.,;:\s@"]+(\.[^<>()\[\]\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
// Should hide default
$('#outform').hide();
$('input[name=User_Email]').keyup(function(){
var isValid = $(this).is(':valid') && validateEmail($(this).val());
if (isValid)
$('#outform').show();
else
$('#outform').hide();
});
function validateEmail(email) {
var re = /^(([^<>()\[\]\.,;:\s@"]+(\.[^<>()\[\]\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<p>Email:</p>
<input name="User_Email" type="email" required/>
<div id="outform">
<p>Company Name:</p>
<input type="text" name="CompanyName"/>
<p>Website:</p>
<input type="text" name="Website" />
<input type='submit'>
</div>