gpt4 book ai didi

javascript - 使用 Sqlite ResultSet 验证表单

转载 作者:行者123 更新时间:2023-12-01 01:49:35 25 4
gpt4 key购买 nike

我在尝试在 Sqlite 中验证 Web 表单的部分内容时遇到计时问题。

function submitForm()
{
var isValid = validateK2();
if(isValid)
submitK2();
}


function validateK2()
{
db.transaction(function(tx){
tx.executeSql("Select * From K2", [], function(tx, result){
if (results meet my criteria)
return true;
else
return false;
}, onSqlError);
});
}

但是在执行 if (isValid...) 代码时,它返回 undefined,因为 validateK2 函数尚未完成执行,因此尚未返回 true 或 false。我在这里缺少什么?

编辑:该网站是一个门户,允许员工从文件菜单中进行选择以填写。提交后,他们可能会提交 1 个或 5 个表单。因此 @CL 是正确的,我可以在executeSql 回调中进行提交,而不是返回 true 然后提交。但事实上,我可能需要根据所选文档运行更多验证,这意味着我需要一种动态方式来验证每个文档,并且在“提交”表单之前能够检查所有文档是否有效。这就是我所做的:

var submitFinalTimeout;
var doc1IsValid;
var doc2IsValid;
var selectedDocCount = selectedDocs.length \\selectedDocs is an array containing all the documents that have been selected and completed

function ValidateForm()
{
submitFinalTimeout = window.setTimout(submitFinal, 3000);

if(selectedDocs.indexOf("Doc1") != -1)
validateDoc1();
if(selectedDocs.indexOf("Doc2") != -1)
validateDoc2();
}

function validateDoc1()
{
db.transaction(function(tx){
tx.executeSql("Select * From Doc1Data", [], function(tx, result){
if (results meet my criteria)
doc1IsValid = true;
selectedDocCount--;
if(selectedDocCount != 0)
{
window.cancelTimeout(submitFinalTimeout);
submitFinalTimeout = window.setTimeout(submitFinal, 3000);
}
}, onError);
});
}

function validateDoc2()
{
db.transaction(function(tx){
tx.executeSql("Select * From Doc2Data", [], function(tx, result){
if (results meet my criteria)
doc2IsValid = true;
selectedDocCount--;
if(selectedDocCount != 0)
{
window.cancelTimeout(submitFinalTimeout);
submitFinalTimeout = window.setTimeout(submitFinal, 3000);
}
}, onError);
});
}

function submitFinal()
{
if (doc1IsValid && doc2IsValid)
submitForm();
}

最佳答案

传递给 transactionexecuteSql 的函数是异步执行的。

如果您想对交易的结果执行某些操作,则必须在该回调中执行该操作。将 return true 替换为 submit2K 调用。

关于javascript - 使用 Sqlite ResultSet 验证表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13751774/

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