我有一个脚本调用模态对话来从用户那里获取一些值。 如果是使用提示,则用户输入单个值,并将控制权传递回脚本。
但是,如果我打开一个对话框,它不会将控制权返回给脚本中的下一个命令。
有谁能告诉我哪里出错了?
此代码有效(请注意getWeight调用提示)
$('#scancodebox').change(function () {
var barcode = '';
if (this.value.length > 0) {
barcode = this.value;
var scancountry = barcode.substring(0, 2);
var scanherd = barcode.substring(2, 8);
var scananimal = barcode.substring(8, 14);
var scandate = barcode.substring(14, 22);
var scandobday = barcode.substring(14, 16);
var scandobmonth = barcode.substring(16, 18);
var scandobyear = barcode.substring(18, 22);
var scansex = barcode.substring(22, 23);
var scanbreed = barcode.substring(23);
var getWeight = prompt("Enter Weight");
var scandob = scandobyear + "/" + scandobmonth + "/" + scandobday
//****************************************************************
// Calculate Days
//****************************************************************
var utcToday = new Date();
var utcDob = new Date(scandobyear, scandobmonth, scandobday);
var _MS_PER_DAY = 1000 * 60 * 60 * 24;
var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var daysold = Math.round(Math.abs((utcDob.getTime() - utcToday.getTime()) / (oneDay)));
var scanmoveon = utcToday.getFullYear() + "/" + utcToday.getMonth() + "/" + utcToday.getDate()
//****************************************************************
//var scanCountry = substring(barcode, 1, 2);
//alert(scanCountry);
//this.value = '';
var grid = $("#grdSPL").data("kendoGrid");
grid.dataSource.add({
Country: scancountry,
HerdNumberId: scanherd,
DOB: scandob,
MoveOn: scanmoveon,
AnimalId: scananimal,
BreedId: scanbreed,
Weight: getWeight,
NotifyCTS: 1,
Age: daysold,
Grade: 2,
DayTag: Math.floor(Math.random() * 250) + 1,
Sex: scansex
});
}
}
这会显示弹出窗口,但关闭时不会继续。
$('#scancodebox').change(function () {
var barcode = '';
if (this.value.length > 0) {
barcode = this.value;
var scancountry = barcode.substring(0, 2);
var scanherd = barcode.substring(2, 8);
var scananimal = barcode.substring(8, 14);
var scandate = barcode.substring(14, 22);
var scandobday = barcode.substring(14, 16);
var scandobmonth = barcode.substring(16, 18);
var scandobyear = barcode.substring(18, 22);
var scansex = barcode.substring(22, 23);
var scanbreed = barcode.substring(23);
//var getWeight = prompt("Enter Weight");
var retval = $("#dialog-modal").dialog("open");
var scandob = scandobyear + "/" + scandobmonth + "/" + scandobday
//****************************************************************
// Calculate Days
//****************************************************************
var utcToday = new Date();
var utcDob = new Date(scandobyear, scandobmonth, scandobday);
var _MS_PER_DAY = 1000 * 60 * 60 * 24;
var oneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds
var daysold = Math.round(Math.abs((utcDob.getTime() - utcToday.getTime()) / (oneDay)));
var scanmoveon = utcToday.getFullYear() + "/" + utcToday.getMonth() + "/" + utcToday.getDate()
//****************************************************************
//var scanCountry = substring(barcode, 1, 2);
//alert(scanCountry);
//this.value = '';
var grid = $("#grdSPL").data("kendoGrid");
grid.dataSource.add({
Country: scancountry,
HerdNumberId: scanherd,
DOB: scandob,
MoveOn: scanmoveon,
AnimalId: scananimal,
BreedId: scanbreed,
Weight: getWeight,
NotifyCTS: 1,
Age: daysold,
Grade: 2,
DayTag: Math.floor(Math.random() * 250) + 1,
Sex: scansex
});
}
}
提前致谢。
罗恩
答案 0 :(得分:0)
当你调用open对话框时,它不等待从用户那里获取值,而是继续运行下一个命令。所以你必须等待关闭对话框并完成其余的代码。 尝试使用Bootstrap Dialog(https://nakupanda.github.io/bootstrap3-dialog/) 在回调中你可以做其余的事。
我希望它对你有用。