javascript - 如果 JS/JQuery 的验证码正确,则显示 PDF
问题描述
我有一个简单的表格,如果验证码正确,我想显示一个 pdf URL。所以用户填写必填字段并输入验证码的代码,然后点击提交,这将打开一个pdf(只有验证码正确)。
下面是我的代码以及验证码。
$(window).on('load', function () {
$('.lds-ellipsis').fadeOut();
$('.preloader').delay(333).fadeOut('slow');
$('body').delay(333);
});
$('#email').on('change', function () {
if (!validateEmail($(this).val())) {
$('#errEmail').html('<span style="color: red;"><i class="ion-close"></i> Invalid email address.</span>');
$(this).val('');
} else {
$('#errEmail').html('');
}
});
//password verification
$('#cpwd').on('change', function () {
if ($(this).val() != $('#pwd').val()) {
$('#errPwd').html('<span style="color: red;"><i class="ion-close"></i> Password not matched.</span>');
$(this).val('');
} else {
$('#errPwd').html('');
}
});
//email validation
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(email);
}
//allow only number input
function isNumber(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
return (charCode > 47 && charCode < 58 || charCode == 8 || charCode == 9 || charCode == 46 || charCode > 36 && charCode < 41);
}
//allow only number input
function isAlpha(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
return (charCode > 64 && charCode < 91 || charCode > 96 && charCode < 123 || charCode == 8 || charCode == 9 || charCode == 46 || charCode > 36 && charCode < 41);
}
//generate captcha
function generateCaptcha(length, chars) {
var result = '';
for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
return result;
}
//default captcha
$('.dynamic-code').text(generateCaptcha(5, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'));
$('.captcha-reload').on('click', function () {
$('.dynamic-code').text(generateCaptcha(5, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'));
});
//check captcha
$('#captcha-input').on('change', function () {
if ($(this).val() != $('.dynamic-code').text()) {
$('#errCaptcha').html('<span style="color: red;"><i class="ion-close"></i> Code is wrong.</span>');
$(this).val('');
} else {
$('#errCaptcha').html('');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="col-11 col-md-10 col-lg-9 col-xl-8 mx-auto">
<form id="loginForm" method="post">
<div class="form-group font-weight-500">
<label for="docs">Number docs*
</label>
<input type="number" class="form-control bg-light border-light"
id="docs" required placeholder="...">
</div>
<div class="form-group font-weight-500">
<label for="other">Other number*
</label>
<input type="number" class="form-control bg-light border-light"
id="other" required placeholder="...">
</div>
<div class="form-group font-weight-500">
<label for="pwd">Code from image*:</label>
<!-- input captcha -->
<div class="captcha-code">
<div class="code">
<div class="dynamic-code"></div>
</div>
<div class="captcha-reload">
<i class="ion-ios-loop-strong"></i>
</div>
</div>
<div class="captcha-input">
<input type="text" class="form-control form-control bg-light border-light"
id="captcha-input" required autocomplete="off"
placeholder="Enter code from image...">
<span id="errCaptcha"></span>
</div>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
所以我想知道如何在这个提交按钮上附加一个pdf,或者如果有更好的方法,请随时告诉我,如何实现这个?
有人可以帮我解决这个问题吗?
解决方案
更新 HTML:在底部添加一个 DIV。
<div id="#pdf"></div>
更新 jQuery 代码:
$('#captcha-input').on('change', function () {
if ($(this).val() != $('.dynamic-code').text()) {
$('#errCaptcha').html('<span style="color: red;"><i class="ion-
close"></i> Code is wrong.</span>');
$(this).val('');
$('#pdf').remove();
} else {
$('#pdf').append('<p>Show What Ever You want</p>');
$('#errCaptcha').html('');
}
});
$(window).on('load', function () {
$('.lds-ellipsis').fadeOut();
$('.preloader').delay(333).fadeOut('slow');
$('body').delay(333);
});
$('#email').on('change', function () {
if (!validateEmail($(this).val())) {
$('#errEmail').html('<span style="color: red;"><i class="ion-close"></i> Invalid email address.</span>');
$(this).val('');
} else {
$('#errEmail').html('');
}
});
//password verification
$('#cpwd').on('change', function () {
if ($(this).val() != $('#pwd').val()) {
$('#errPwd').html('<span style="color: red;"><i class="ion-close"></i> Password not matched.</span>');
$(this).val('');
} else {
$('#errPwd').html('');
}
});
//email validation
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(email);
}
//allow only number input
function isNumber(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
return (charCode > 47 && charCode < 58 || charCode == 8 || charCode == 9 || charCode == 46 || charCode > 36 && charCode < 41);
}
//allow only number input
function isAlpha(evt) {
evt = (evt) ? evt : window.event;
var charCode = (evt.which) ? evt.which : evt.keyCode;
return (charCode > 64 && charCode < 91 || charCode > 96 && charCode < 123 || charCode == 8 || charCode == 9 || charCode == 46 || charCode > 36 && charCode < 41);
}
//generate captcha
function generateCaptcha(length, chars) {
var result = '';
for (var i = length; i > 0; --i) result += chars[Math.round(Math.random() * (chars.length - 1))];
return result;
}
//default captcha
$('.dynamic-code').text(generateCaptcha(5, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'));
$('.captcha-reload').on('click', function () {
$('.dynamic-code').text(generateCaptcha(5, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'));
});
//check captcha
$('#captcha-input').on('change', function () {
if ($(this).val() != $('.dynamic-code').text()) {
$('#errCaptcha').html('<span style="color: red;"><i class="ion-close"></i> Code is wrong.</span>');
$(this).val('');
$('#pdf').html('');
} else {
$('#pdf').append('<p>WhatEver You want to show put here</p>');
$('#errCaptcha').html('');
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<div class="col-11 col-md-10 col-lg-9 col-xl-8 mx-auto">
<form id="loginForm" method="post">
<div class="form-group font-weight-500">
<label for="docs">Number docs*
</label>
<input type="number" class="form-control bg-light border-light"
id="docs" required placeholder="...">
</div>
<div class="form-group font-weight-500">
<label for="other">Other number*
</label>
<input type="number" class="form-control bg-light border-light"
id="other" required placeholder="...">
</div>
<div class="form-group font-weight-500">
<label for="pwd">Code from image*:</label>
<!-- input captcha -->
<div class="captcha-code">
<div class="code">
<div class="dynamic-code"></div>
</div>
<div class="captcha-reload">
<i class="ion-ios-loop-strong"></i>
</div>
</div>
<div class="captcha-input">
<input type="text" class="form-control form-control bg-light border-light"
id="captcha-input" required autocomplete="off"
placeholder="Enter code from image...">
<span id="errCaptcha"></span>
</div>
</div>
<button type="submit" class="btn btn-default">Submit</button>
</form>
</div>
<div id="pdf"></div>
推荐阅读
- elasticsearch - 有没有办法只聚合弹性搜索中的查询命中?
- reactjs - 如何在 create-react-app 中以开发模式启用服务工作者?
- javascript - 为什么它不更新我数据库中的日期?
- regex - 如何在文档中找到可能以不同形式编写的单词?(Python)
- python - 在 azure 数据块和 azure 数据工厂中执行 python 脚本
- java - 我的元素列表 xpath 计数为 0
- python - 如何简化具有多个包含变量的 .str.contains 代码?
- python-3.x - 如何通过python3调用远程服务器中的文件?
- html - Webpack 文件加载器不会构建 PDF 文件
- javascript - 贝宝订阅集成