Javascript JQuery Uncaught RangeError:超过bootstrap.datepicker.js的最大调用堆栈大小
我以前有一个运行良好的代码,我猜是在datepicker中。当我到处玩并测试单击datepicker时,它开始显示错误 我知道,超过堆栈大小意味着我有某种无限递归,永远不会返回到基或任何东西,你能告诉我如何解决这个问题吗 我的意思是,这个错误是非常随机的,有时候当你改变日期的时候,它是好的,有时候它只是停止了。当你在日期选择器上更改日期时,它并不总是崩溃 除了datepicker部分(开始日期和结束日期)之外,我从来没有在其他地方得到错误,在我创建datepicker之前,它是正常的 这是控制台上错误消息的屏幕截图 及 HTML对应物(HTML和JS分开)只是 这是我的JS代码Javascript JQuery Uncaught RangeError:超过bootstrap.datepicker.js的最大调用堆栈大小,javascript,jquery,Javascript,Jquery,我以前有一个运行良好的代码,我猜是在datepicker中。当我到处玩并测试单击datepicker时,它开始显示错误 我知道,超过堆栈大小意味着我有某种无限递归,永远不会返回到基或任何东西,你能告诉我如何解决这个问题吗 我的意思是,这个错误是非常随机的,有时候当你改变日期的时候,它是好的,有时候它只是停止了。当你在日期选择器上更改日期时,它并不总是崩溃 除了datepicker部分(开始日期和结束日期)之外,我从来没有在其他地方得到错误,在我创建datepicker之前,它是正常的 这是控制台
$F.loadView(function() {
"use strict";
return {
title: 'Master Discount - HelloBill',
viewtitle: 'Master Discount',
urlController: 'discount/',
urlControllerHardware: 'hardware/',
urlControllerLicense: 'license/',
afterLoad: function(param) {
var self = this;
var th = this.parent;
var post = '';
var txt = 'inserted';
//bwt munculin judul
if (param.param[0]) {
$('#topic').text('Update ' + self.viewtitle);
txt = 'updated';
getUpdateData(param, self, txt);
post = param.param[0];
$('#judul_detail').removeClass("looptemplate");
} else {
$('#topic').text('Add ' + self.viewtitle);
}
//mengeluarkan detail barang2 yg akan didiskon
$('#Type').change(function(){
if($('#Type').val()){
$('#judul_detail').removeClass("looptemplate");
if($('#Type').val() == 'Hardware') {
// self.refreshTableTes(9, "Hardware");
self.refreshTableHardware(param, self, txt);
}
else {
// self.refreshTableTes(12, "License");
self.refreshTableLicense(param, self, txt);
}
} else {
$('#judul_detail').addClass("looptemplate");
$('#Body').empty();
}
});
//Datepicker
Date.prototype.addDays = function(days) {
var dat = new Date(this.valueOf());
dat.setDate(dat.getDate() + days);
return dat;
}
Date.prototype.reFormat = function() {
var twoDigitMonth = ((this.getMonth()+1) < 10) ? '0'+(this.getMonth()+1) : (this.getMonth()+1);
var currentDate = this.getFullYear() + "-" + twoDigitMonth + "-" + this.getDate();
return currentDate;
}
var fullDate1 = new Date();
var dumDate1 = '';
$('#StartDate').datepicker({
format: 'yyyy-mm-dd',
autoclose: false,
startDate: fullDate1.reFormat()
// beforeShowDay: NotBeforeToday
}).on('changeDate', function(selected) {
var startDate = new Date(selected.date.valueOf());
$('#EndDate').datepicker('setStartDate', startDate);
// alert(dumDate1);
// alert($('#EndDate').val());
if(startDate > dumDate1 || $('#EndDate').val() == '') {
// $('#EndDate').val($(this).val());
$('#EndDate').datepicker('setDate', startDate);
}
dumDate1 = new Date(selected.date.valueOf());
});
var fullDate2 = new Date();
var dumDate2 = '';
$('#EndDate').datepicker({
format: 'yyyy-mm-dd',
autoclose: false,
startDate: fullDate2.reFormat()
// beforeShowDay: NotBeforeToday
}).on('changeDate', function(selected) {
var startDate = new Date(selected.date.valueOf());
if(startDate < dumDate2 || $('#StartDate').val() == '') {
$('#EndDate').datepicker('setStartDate', startDate);
$('#StartDate').datepicker('setDate', startDate);
// $('#EndDate.day').css('background-color', 'coral');
}
dumDate2 = new Date(selected.date.valueOf());
});
//Discount Percentage or Value
$('input.terikat').keyup(function(){
if($(this).val()) {
$('input.terikat').not(this).val('');
}
});
var numbersOnly = document.getElementsByClassName('numbers-only');
for(var i = 0 ; i < numbersOnly.length ; i++) {
numbersOnly[i].addEventListener('keydown', function(e) {
var key = e.keyCode ? e.keyCode : e.which;
if (!( [8, 9, 13, 27, 46, 110, 190].indexOf(key) !== -1 ||
(key == 65 && ( e.ctrlKey || e.metaKey ) ) ||
(key >= 35 && key <= 40) ||
(key >= 48 && key <= 57 && !(e.shiftKey || e.altKey)) ||
(key >= 96 && key <= 105)
)) e.preventDefault();
});
}
//Discount Start Date and End Date
var dur = document.getElementById("StartDate");
var dur2 = document.getElementById("EndDate");
var checkboxDuration = document.getElementById("duration");
dur.disabled = true;
dur2.disabled = true;
dur.style.backgroundColor = "Gainsboro";
dur2.style.backgroundColor = "Gainsboro";
$("#duration").click(function(){
if(checkboxDuration.checked){
dur.disabled = false;
dur2.disabled = false;
dur.style.backgroundColor = "white";
dur2.style.backgroundColor = "white";
} else {
dur.disabled = true;
dur2.disabled = true;
dur.style.backgroundColor = "Gainsboro";
dur2.style.backgroundColor = "Gainsboro";
}
});
//Mengatur checkbox yang select all
$('#select_all').click(function(){
if($(this).prop("checked") == true){
$(".selectedItem").prop("checked", true);
}
else{
$(".selectedItem").prop("checked", false);
}
});
//Submit Form
$('#action').submit(function(e) {
e.preventDefault();
var ser = $F.serialize('#action');
console.log(ser);
//insert ke tabel diskon dan detail diskon
$F.service({
type: 'post',
url: 'discount/action',
data: JSON.stringify(ser),
success: function(data){
if(data != null) {
if(data.Status == 0) {
$F.popup.show({
content: data.Message
});
$('.modal-content').attr("style", "width : 250px");
setTimeout(function() {
window.location = $F.config.get('baseUri') + '#/master/discount';
$('.popup-close-button').click();
}, 1500);
} else {
var err = '';
for (var field in data.Errors) {
err += data.Errors[field].ID + ' : ' + data.Errors[field].Message + '</br>';
}
}
} else {
DZ.showAlertWarning("Something is wrong, no data is " + txt, "#error_insert_update", 0);
}
}
}); //tutup service (insert diskon dan detail diskon)
});
}, refreshTableHardware: function (param, self, jenis) {
$F.service({
url:self.urlControllerHardware+"getAllData",
type: 'GET',
success: function(data){
if(data != null) {
var x = data.length;
var body = $("#Body");
var depan = '<div class="form-group"><div class="col-md-4 col-sm-4 col-xs-4"></div><div class="col-md-8 col-sm-8 col-xs-8">';
var belakang = '</div></div>';
body.empty();
for(var i = 0; i < x; i++){
var temp = depan + '<input type="checkbox" class="selectedItem" name="Item[]" id="detail-'+i+'" value="' + data[i].HardwareID + '"> <label for="detail-'+i+'">' + data[i].HardwareName + '</label>' + belakang;
body.append(temp);
}
if(jenis == 'updated') {getDetailData(param, self);}
} else {
DZ.showAlertWarning("Cannot fetch the data, no services is available for now", "#Body", 0);
}
}
})
}, refreshTableLicense: function (param, self, jenis) {
$F.service({
url:self.urlControllerLicense+"getAllData",
type: 'GET',
success: function(data){
if(data != null) {
var x = data.length;
var body = $("#Body");
var depan = '<div class="form-group"><div class="col-md-4 col-sm-4 col-xs-4"></div><div class="col-md-8 col-sm-8 col-xs-8">';
var belakang = '</div></div>';
body.empty();
for(var i = 0; i < x; i++){
var temp = depan + '<input type="checkbox" class="selectedItem" name="Item[]" id="detail-'+i+'" value="' + data[i].LicenseID + '"> <label for="detail-'+i+'">' + data[i].LicenseName + '</label>' + belakang;
body.append(temp);
}
if(jenis == 'updated') getDetailData(param, self);
} else {
DZ.showAlertWarning("Cannot fetch the data, no services is available for now", "#Body", 0);
}
}
})
}
};
function NotBeforeToday(date)
{
var now = new Date();//this gets the current date and time
if (date.getFullYear() == now.getFullYear() && date.getMonth() == now.getMonth() && date.getDate() > now.getDate())
return [true];
if (date.getFullYear() >= now.getFullYear() && date.getMonth() > now.getMonth())
return [true];
if (date.getFullYear() > now.getFullYear())
return [true];
return [false];
}
function getUpdateData(param, self, jenis) {
$F.service({
type: 'get',
url: self.urlController + 'getUpdateData/' + param.param[0],
success: function(data) {
if(data != null) {
var item = data.Discount[0];
$('#DiscountID').val(item.DiscountID);
$('#DiscountCode').val(item.DiscountCode);
$('#DiscountName').val(item.DiscountName);
$('#Description').val(item.Description);
$('#Type').val(item.Type);
if(item.Type == 'Hardware') self.refreshTableHardware(param, self, jenis);
else self.refreshTableLicense(param, self, jenis);
// getDetailData(param, self);
$('#Percentage').val(item.DiscountPercentage);
$('#Value').val(item.DiscountValue);
if(item.StartDate && item.EndDate) {
// alert(item.StartDate);
// alert(item.EndDate);
$('#duration').prop("checked", true);
$('#StartDate').prop("disabled", false);
$('#StartDate').css("background-color", "white");
$('#EndDate').prop("disabled", false);
$('#EndDate').css("background-color", "white");
var i = item.StartDate;
var j = item.EndDate;
// $('#Period').val(i + ' - ' + j);
$('#StartDate').val(i);
$('#EndDate').val(j);
}
} else {
DZ.showAlertWarning("Cannot fetch the data, no services is available for now", "#error", 0);
}
}
});
}
function getDetailData(param, self) {
$F.service({
type: 'get',
url: self.urlController + 'getDetailData/' + param.param[0],
success: function(data) {
if(data != null) {
var x = data.Discount.length;
var select = $('.selectedItem');
for(var i = 0; i < x; i++) {
var discount = data.Discount[i];
var item='';
if(discount.HardwareID) {
item = discount.HardwareID;
} else {
item = discount.LicenseID;
}
// alert(item);
select.each(function(){
// alert($(this).val());
if($(this).val() == item) {
// alert(item);
$(this).attr("checked", "checked");
}
// else alert(item);
});
}
} else {
DZ.showAlertWarning("Cannot fetch the data, no services is available for now", "#Body", 0);
}
}
});
}
}());
$F.loadView(函数(){
“严格使用”;
返回{
标题:“大师级折扣-HelloBill”,
viewtitle:“主折扣”,
urlController:“折扣/”,
urlControllerHardware:“硬件/”,
urlControllerLicense:“许可证/”,
后加载:功能(参数){
var self=这个;
var th=this.parent;
var post='';
var txt='插入';
//bwt munculin judul
if(参数参数[0]){
$(“#主题”).text('Update'+self.viewtitle);
txt='更新';
getUpdateData(参数、self、txt);
post=参数参数[0];
$(“#judul_detail”).removeClass(“looptemplate”);
}否则{
$('#topic').text('Add'+self.viewtitle);
}
//详细说明2 yg可能会有问题
$('#Type')。更改(函数(){
if($('#Type').val()){
$(“#judul_detail”).removeClass(“looptemplate”);
if($('#Type').val()=='Hardware'){
//自我更新表(9,“硬件”);
刷新表硬件(param、self、txt);
}
否则{
//自我更新表格(12,“许可证”);
refreshtTableLicense(param、self、txt);
}
}否则{
$('judul_detail').addClass(“looptemplate”);
$('#Body').empty();
}
});
//日期选择器
Date.prototype.addDays=函数(天){
var dat=新日期(this.valueOf());
dat.setDate(dat.getDate()+天);
返回数据;
}
Date.prototype.reFormat=函数(){
var twoDigitMonth=((this.getMonth()+1)<10)?'0'+(this.getMonth()+1):(this.getMonth()+1);
var currentDate=this.getFullYear()+“-”+twoDigitMonth+“-”+this.getDate();
返回当前日期;
}
var fullDate1=新日期();
变量dumDate1='';
$('#StartDate')。日期选择器({
格式:“yyyy-mm-dd”,
自动关闭:错误,
startDate:fullDate1.重新格式化()
//展示日之前:不在今天之前
}).on('changeDate',函数(已选择){
var startDate=新日期(selected.Date.valueOf());
$(“#EndDate”).datepicker('setStartDate',startDate);
//警报(dumDate1);
//警报($('#EndDate').val());
if(startDate>dumDate1 | | |$('#EndDate').val()=''){
//$('#EndDate').val($(this.val());
$('EndDate')。日期选择器('setDate',startDate);
}
dumDate1=新日期(selected.Date.valueOf());
});
var fullDate2=新日期();
var dumDate2='';
$('#EndDate')。日期选择器({
格式:“yyyy-mm-dd”,
自动关闭:错误,
startDate:fullDate2.重新格式化()
//展示日之前:不在今天之前
}).on('changeDate',函数(已选择){
var startDate=新日期(selected.Date.valueOf());
if(startDate=35&&key=48&&key=96&&key now.getDate())
返回[真];
如果(date.getFullYear()>=now.getFullYear()&&date.getMonth()>now.getMonth())
返回[真];
如果(date.getFullYear()>now.getFullYear())
返回[真];
返回[假];
}
函数getUpdateData(参数、self、jenis){
$F.服务费({
键入:“get”,
url:self.urlController+'getUpdateData/'+param.param[0],
成功:功能(数据){
如果(数据!=null){
var项目=数据折扣[0];
$('#DiscountID').val(项目.DiscountID);
$(“#折扣代码”).val(item.DiscountCode);
$('#折扣名称').val(item.DiscountName);
$('#Description').val(item.Description);
$('#Type').val(item.Type);
if(item.Type=='Hardware')self.refreshtTableHardware(param,self,jenis);
else self.refreshtTableLicense(param、self、jenis);
//getDetailData(参数、自身);
$('百分比').val(项目折扣百分比);
$('#Value').val(item.DiscountValue);
if(item.StartDate和item.EndDate){
//警报(项目开始日期);
//警报(项目结束日期);