javascript - 当“电子邮件”字段有效时,如何启用我的按钮?
问题描述
我做了这个功能,以便在输入与空不同时启用表单按钮,但我不知道如何做到这一点,以便在#email ID 中,输入除了与空不同外,还必须包含字符'"@" 或字符串 "@gmail.com"、"@hotmail.com"。
这是功能
$(function () {
$('#button').attr('disabled', true);
$('#textarea, #email, #name').change(function () {
if ($('#name').val() != '' && $('#email').val() != '' && $('#textarea').val() != '') {
$('#button').attr('disabled', false);
} else {
$('#button').attr('disabled', true);
}
});
});
这是 HTML
<form id="contact-form" method="POST" action="forms/contact-form-handler.php">
<span class="asterisco">*</span><input name="name" id="name" type="text" class="form-control" placeholder="Nombre" required>
<br>
<span class="asterisco">*</span><input name="email" id="email" type="email" class="form-control" placeholder="Dirección de correo electrónico" required>
<br>
<span class="asterisco">*</span><textarea style="resize: none;" id="textarea" name="message" class="form-control" placeholder="Mensaje" row="4" required></textarea>
<span class="texto-asterisco">Las celdas marcadas con * son obligatorias.</span>
<br>
<div id="button-container">
<button type="submit" id="button" disabled="disabled"></button>
</div>
</form>
解决方案
使用正则表达式并测试电子邮件输入字段的值是否匹配。
const 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,}))$/;
$(function() {
$('#button').attr('disabled', true);
$('#textarea, #email, #name').change(function() {
if ($('#name').val() != '' && re.test($('#email').val()) != '' && $('#textarea').val() != '') {
$('#button').attr('disabled', false);
} else {
$('#button').attr('disabled', true);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="contact-form" method="POST" action="forms/contact-form-handler.php">
<span class="asterisco">*</span><input name="name" id="name" type="text" class="form-control" placeholder="Nombre" required>
<br>
<span class="asterisco">*</span><input name="email" id="email" type="email" class="form-control" placeholder="Dirección de correo electrónico" required>
<br>
<span class="asterisco">*</span><textarea style="resize: none;" id="textarea" name="message" class="form-control" placeholder="Mensaje" row="4" required></textarea>
<span class="texto-asterisco">Las celdas marcadas con * son obligatorias.</span>
<br>
<div id="button-container">
<button type="submit" id="button" disabled="disabled">Submit</button>
</div>
</form>
推荐阅读
- angular - 无法通过 2 个级别传递 ngModel
- android - 通过使用自定义地图提取将一个可观察的对象溢出到两个
- python - 为什么 celery beat 不安排定期任务?
- angular - 执行导出其他组件html的角度组件的正确模式
- mysql - MySQL - 计算事件之间的时间差 - LEFT JOIN、TIMEDIFF、MAX
- outlook - AppleScript - 通过按键模拟填写 Outlook 主题
- internet-explorer-11 - 自动登录 Internet Explorer 11
- apache-flink - Flink SQL CURRENT_TIMESTAMP 总是返回相同的值
- php - Laravel 关系中嵌套项的分页
- javascript - 在 mousemove - 画布上应用灰度和棕褐色滤镜