I'm creating dynamically a couple of div with inner controls. Two of those controls should be datepickers. But for some reason they are not showing (only input text are shown)
It works if I create static html, but not when I'm using dynamic one.
This is the code I'm using to generate the HTML (I can see the div)
var ShowContainerDiv = document.createElement('DIV');
var btnShowDiv = document.createElement('DIV');
btnShowDiv.id = 'btnShowDiv ';
btnShowDiv.title = 'Change';
btnShowDiv.index = 120;
var lblShow = document.createElement('label')
lblShow.htmlFor = btnShowDiv;
lblShow.appendChild(document.createTextNode('Show'));
btnShowDiv.appendChild(lblShow );
btnShowDiv.onclick = function () {
dropdown.style.visibility = visible;
};
var dropdown = document.createElement('DIV');
dropdown.style.backgroundColor = 'white';
dropdown.style.borderStyle = 'solid';
dropdown.style.borderWidth = '2px';
dropdown.style.cursor = 'pointer';
dropdown.style.textAlign = 'left';
dropdown.style.width = '150px';
var chkRed = document.createElement(input);
chkRed.type = checkbox;
chkRed.id = chkRed;
chkRed.value = Red;
chkRed.checked = false;
var lblRed = document.createElement('label')
lblRed.htmlFor = chkRed;
lblRed.style.color = #F00;
lblRed.appendChild(document.createTextNode('Red'));
var chkYellow = document.createElement(input);
chkYellow.type = checkbox;
chkYellow.id = chkYellow;
chkYellow.value = Yellow;
chkYellow.checked = false;
var lblYellow = document.createElement('label')
lblYellow.htmlFor = chkYellow;
lblYellow.style.color = #FF0;
lblYellow.appendChild(document.createTextNode('Yellow'));
var chkGreen = document.createElement(input);
chkGreen.type = checkbox;
chkGreen.id = chkGreen;
chkGreen.value = Green;
chkGreen.checked = false;
var lblGreen = document.createElement('label')
lblGreen.htmlFor = chkGreen;
lblGreen.style.color = #0F0;
lblGreen.appendChild(document.createTextNode('Green'));
var dateFrom = document.createElement(input);
dateFrom.id = txtDateFrom;
dateFrom.type = text;
dateFrom.className = datepicker;
dateFrom.style.width = 70px;
dateFrom.readonly = readonly;
var lblDateFrom = document.createElement('label')
lblDateFrom.htmlFor = txtDateFrom;
lblDateFrom.appendChild(document.createTextNode('From'));
var dateTo = document.createElement(input);
dateTo.id = txtDateTo;
dateTo.type = text;
dateTo.className = datepicker;
dateTo.style.width = 70px;
dateTo.readonly = readonly;
var lblDateTo = document.createElement('label')
lblDateTo.htmlFor = txtDateTo;
lblDateTo.appendChild(document.createTextNode('To'));
var btnDone = document.createElement(input);
btnDone.type = button;
btnDone.name = btnDone;
btnDone.value = Done;
btnDone.onclick = function () {
dropdown.style.visibility = hidden;
};
dropdown.appendChild(chkRed);
dropdown.appendChild(lblRed);
dropdown.appendChild(document.createElement(BR));
dropdown.appendChild(chkYellow);
dropdown.appendChild(lblYellow);
dropdown.appendChild(document.createElement(BR));
dropdown.appendChild(chkGreen);
dropdown.appendChild(lblGreen);
dropdown.appendChild(document.createElement(BR));
dropdown.appendChild(dateFrom);
dropdown.appendChild(document.createElement(BR));
dropdown.appendChild(dateTo);
dropdown.appendChild(document.createElement(BR));
dropdown.appendChild(btnDone);
ShowContainerDiv.appendChild(btnShowDiv);
ShowContainerDiv.appendChild(dropdown);
g.event.addDomListener(btnShowDiv, 'click', function () {
dropdown.visible = true;
dropdown.style.visibility = visible;
});
g.event.addDomListener(btnDone, 'click', function () {
dropdown.visible = false;
dropdown.style.visibility = hidden;
});
map.controls[g.ControlPosition.TOP_RIGHT].push(ShowContainerDiv);
Then in a .js file I have this (I checked and I'm including the file)
$(document).ready(function () {
$(.datepicker).datepicker({
dateFormat: 'yy/m/d',
firstDay: 1,
changeMonth: true,
changeYear: true,
showOn: 'both',
autosize: true,
buttonText: Select date,
buttonImage: '../Content/images/calendar.png',
buttonImageOnly: true
});
});
Why the datepicker is not showing up?