JQuery - 如何在调用模态对话框后继续使用脚本

时间:2016-04-19 10:08:38

标签: c# jquery model-view-controller dialog

我有一个脚本调用模态对话来从用户那里获取一些值。 如果是使用提示,则用户输入单个值,并将控制权传递回脚本。

但是,如果我打开一个对话框,它不会将控制权返回给脚本中的下一个命令。

有谁能告诉我哪里出错了?

此代码有效(请注意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
            });
        }
    }

提前致谢。

罗恩

1 个答案:

答案 0 :(得分:0)

当你调用open对话框时,它不等待从用户那里获取值,而是继续运行下一个命令。所以你必须等待关闭对话框并完成其余的代码。 尝试使用Bootstrap Dialog(https://nakupanda.github.io/bootstrap3-dialog/) 在回调中你可以做其余的事。

我希望它对你有用。