Как "сбросить" Dojo datetextbox по умолчанию?

У меня есть слой наложения JS, который настраивает элементы управления вводом данных в моем веб-приложении как виджеты Dojo. Я беру входные данные, такие как и превращаю их в DateTextBox виджеты.

Вот мой основной код:

            var df = dateformat;
            df.replace('mm', 'MM');
            var val = input.value;
            if (val == undefined){
               val = '';
            }
            return new datebox({
                "label": input.title,
                "value": val,
                 "name": input.name,
                   "id": input.id,
          "constraints": { "datePattern": df }
            });

Моя проблема в том, что все DateTextBox в конечном итоге устанавливаются с '1970-00-01' в качестве начальной даты, если не указано значение. Я хотел бы, чтобы они были установлены в null или undef, если значение не указано, но это кажется невозможным до запуска.

Есть ли способ установить это, прежде чем я позвоню widget.startup()?

1 ответ

Решение

Вместо передачи пустой строки в DateTextBox вам нужно передать литерал null или же undefined, Я собрал jsfiddle, демонстрирующий различные типы значений и их первоначальное отображение:

require(['dijit/form/DateTextBox', 'dojo/domReady!'], function (DateTextBox) {
    //initial value current date
    new DateTextBox({
        value: new Date()
    }).placeAt('myBody');
    //no value
    new DateTextBox({

    }).placeAt('myBody');
    //null value
    new DateTextBox({
        value: null
    }).placeAt('myBody');
    //undefined value
    new DateTextBox({
        value: undefined
    }).placeAt('myBody');
        //empty string value
    new DateTextBox({
        value: ''
    }).placeAt('myBody');
});

jsfiddle

Другие вопросы по тегам