2013-09-18 3 views
3

У меня есть слой перекрытия JS, который устанавливает элементы управления вводом данных в моем веб-приложении в виде виджетов dojo. Я захватываю входные данные, такие как < input type = "text" class = "date"/> и превращаем их в DateTextBox виджетов.Как отключить 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()?

ответ

6

Вместо передачи пустой строки в 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