Я использую jQuery DatePicker для выбора элементов с "#", все работает нормально, когда я помещаю "прямую" строку в селектор, но как только я начинаю конкатенировать, результат очень подозрительный. Возможно, этот скриншот на консоли объясняет, с чем я борюсь с
HTML:
<input id="wizard:wizard-body:datePiece_picker" name="wizard:wizard-body:datePiece_picker" type="text" value="">
Javascript:
function replaceAll(str, find, replace) {
return str.replace(new RegExp(find, "g"), replace);
}
var TYPEDIALOG = "wizard:wizard-body:";
var id = replaceAll(TYPEDIALOG, ":", "\\\\:")+ "datePiece_picker";
if ($("#" + id).length != 0) {
$("#" + id).datepicker({
dateFormat : "dd/mm/yy"
});
}
Ваша замена добавила слишком много обратных косых черт:
var id = replaceAll(TYPEDIALOG, ":", "\\:") + "datePiece_picker";
Как побочная заметка, это, вероятно, довольно хороший аргумент, чтобы избежать :
в идентификаторах элементов. Кроме того, datePiece_picker
может быть классом, а не частью идентификатора.