慢速客户端上的JavaScript验证
我假设这是客户端或网络问题,不管怎样,这就是问题所在 我使用文本输入(慢速客户端上的JavaScript验证,javascript,arrays,client-side-validation,Javascript,Arrays,Client Side Validation,我假设这是客户端或网络问题,不管怎样,这就是问题所在 我使用文本输入(#id_条形码)从条形码扫描仪捕获代码,因为扫描仪会自动添加一个[Enter],我使用以下代码: <script type="text/javascript"> var scannedCodes = []; // No duplicates allowed! var re_code = /^B([A-Z]{2}\d{2})(\d{11})$/; re_code.compile(re_code
#id_条形码
)从条形码扫描仪捕获代码,因为扫描仪会自动添加一个[Enter]
,我使用以下代码:
<script type="text/javascript">
var scannedCodes = []; // No duplicates allowed!
var re_code = /^B([A-Z]{2}\d{2})(\d{11})$/;
re_code.compile(re_code);
$(document).ready(function() {
$("#id_barcode").keypress(function(e) {
if(e.which == 13) {
processCode();
}
});
});
function processCode() {
var text = $("#id_barcode").val().toUpperCase();
$("#id_barcode").val(""); // Reset input
if (text.match(re_code)) {
var code = text.match(re_code)[0];
if (scannedCodes.indexOf(code) != -1) {
showError("Duplicated code: " + code);
} else {
scannedCodes.push(code);
// More code here including an AJAX call for extra validation
}
}
}
</script>
如果我再等待一秒钟并输入相同的代码,它将进行验证。如何克服此问题?我没有看到任何定义
文本的代码(在text.match
中),也没有看到任何将代码添加到scannedCodes
的代码。如果这种情况发生在AJAX调用中,那么显然您会遇到延迟问题。在发送AJAX调用之前,将代码添加到扫描代码列表中。在输入代码之前,是否检查扫描仪是否触发了enter?在这种情况下,你的情况就会发生。@NiettheDarkAbsol抱歉,更新了我的问题。AJAX调用是为了一些东西else@LucasRodrigues对但问题是,我手动模拟扫描仪,粘贴并点击回车键quickly@CésarBustíos你能创建一个运行的示例吗?我没有看到任何定义文本的代码(在text.match
中),也没有看到任何将代码添加到scannedCodes
的代码。如果这种情况发生在AJAX调用中,那么显然您会遇到延迟问题。在发送AJAX调用之前,将代码添加到扫描代码列表中。在输入代码之前,是否检查扫描仪是否触发了enter?在这种情况下,你的情况就会发生。@NiettheDarkAbsol抱歉,更新了我的问题。AJAX调用是为了一些东西else@LucasRodrigues对但问题是,我手动模拟扫描仪,粘贴并点击回车键quickly@CésarBustíos你能创建一个运行示例吗?
console.log(scannedCodes);
["BSG2410100141820", "BSG2410100141820", "BSG2410100141820"]