Javascript 使用jQueryUI从用户获取布尔值
我正在编写一些表单验证函数,由于灵活性,我决定使用jQueryUI来提示用户 这有一个小问题。我希望我的函数为我的错误报告系统返回一个由布尔值和字符串组成的数组。JQueryUI对话框是异步的,这意味着浏览器不会像本机提示符()那样挂起并等待返回值 以下是一些示例代码: 验证程序功能:Javascript 使用jQueryUI从用户获取布尔值,javascript,jquery,jquery-ui,dialog,callback,Javascript,Jquery,Jquery Ui,Dialog,Callback,我正在编写一些表单验证函数,由于灵活性,我决定使用jQueryUI来提示用户 这有一个小问题。我希望我的函数为我的错误报告系统返回一个由布尔值和字符串组成的数组。JQueryUI对话框是异步的,这意味着浏览器不会像本机提示符()那样挂起并等待返回值 以下是一些示例代码: 验证程序功能: function verifyTOS_PVM_v2() { verifyTOS_PVM_v2_callback = ''; if(!empty($('#inputPVM').val())) {
function verifyTOS_PVM_v2()
{
verifyTOS_PVM_v2_callback = '';
if(!empty($('#inputPVM').val())) {
$('#inputPVM').val(date('d.m.Y', parseFinnishDate($('#inputPVM').val())));
val = $('#inputPVM').val()
date = parseFinnishDate($('#inputPVM').val());
today = today();
diff = Math.floor((date - today)/60/60/24);
if(diff <= -14)
{
buttons =
[
{
text:"Kyllä",
click:function()
{
$(this).dialog('destroy');
verifyTOS_PVM_v2_callback = "Kyllä"
}
},
{
text:"Ei",
click:function()
{
$(this).dialog('destroy');
verifyTOS_PVM_v2_callback = "Ei"
}
}
]
jQueryPrompt('Message', 'Koskien päivämäärää...', 400, buttons);
while(verifyTOS_PVM_v2_callback != "Kyllä" && verifyTOS_PVM_v2_callback != "Ei")
{
setTimeout('i = i + 1', 50)
}
res = verifyTOS_PVM_v2_callback;
if(res == "Kyllä")
{
error_occured = 2;
error = 'Message'
}
else
{
error_occured = 1;
error = 'Message'
}
}
} else {
error_occurred = 1;
error = "Message";
}
reterr[0] = error_occurred;
reterr[1] = error;
return reterr;
}
function jQueryPrompt(msg, title, width, buttons)
{
$('body').append('<div id="jQueryPromptHost"></div>');
$('#jQueryPromptHost').append(msg);
$('#jQueryPromptHost').dialog({
title: title,
resizable: false,
width: width,
daraggable: false,
modal: true,
buttons: buttons
})
}
函数验证tos_PVM_v2()
{
verifyTOS_PVM_v2_callback='';
如果(!empty($('#inputPVM').val()){
$('inputPVM').val(date('d.m.Y',parseFinnishDate($('inputPVM').val());
val=$('#inputPVM').val()
date=parseFinnishDate($('#inputPVM').val();
今天;
差异=数学楼层((日期-今天)/60/60/24);
如果(diff在循环锁定时,您不能使用它
必须将函数分为两部分。第一部分是调用对话框之前的代码,第二部分是对话框之后的部分。对话框按钮单击“调用第二个函数”
如果代码必须是同步的,那么你就有点运气不好,被难看的窗口卡住了。提示。在中单击事件处理程序,只需调用函数而不是赋值
buttons = [
{
text:"Kyllä",
click: function() {
$(this).dialog('destroy');
handleButtonClick("Kyllä");
//verifyTOS_PVM_v2_callback = "Kyllä"
}
},
{
text:"Ei",
click: function() {
$(this).dialog('destroy');
handleButtonClick("Ei");
//verifyTOS_PVM_v2_callback = "Ei"
}
}
]
//Somewhere else in the code
var handleButtonClick = function(value) {
if (value == "Kyllä") {
...
} else if (value == "Ei") {
...
}
};
那么,有没有办法拥有多个验证器(每个字段一个验证器)有了这种输入和/或异步AJAX,它们都会返回到一个中心函数?这不可能……您可以将所有函数排队,等待它们全部返回,然后进入下一步。jQuery内置了所有这些功能。您会不会碰巧有一些示例或其他东西……哦,我可以将其放入函数中?请您解释一下为什么将函数分配给var好吗?是的。函数是JavaScript中的头等公民。这意味着,它们可以分配给变量并作为字符串、数字等参数传递。function foo(){}
语法只是var foo=function(){}的简写形式
,对于解释器来说,它们是一样的。这解释了为什么javascript控制台在我执行foo时输出函数foos source。这也解释了为什么我今天在使用与变量同名的函数时遇到了重大问题(类型错误:date不是函数):)