Javascript установить логическое значение для выпадающего

0

У меня есть приведенный ниже код для отображения "Активный" как истинный, а InActive - как false

var statusJSON = {
  '- Select -' : '', 
  'Active' : true, 
  'Inactive': false
};
$.each(statusJSON, function(key, val){
  $statusFlag.append('<option value=' + val + '>' + key + '</option>');
});

Также я делаю следующее об изменении выпадающего списка;

$("#statusFlag").change(function() {
  self.model.set({
    statusFlag: $('#statusFlag').val()
  });
});

Теперь проблема заключается в том, когда я отправляю форму, значение в statusFlag представляется как строка ("true" или "false"). Как я могу гарантировать, что для statusFlag установлено только логическое значение?

  • 0
    Я думаю, что для элемента select допускаются только строковые значения, следовательно, преобразование логических значений в строковые. Попробуйте сравнить его со строкой "true" или "false"
  • 0
    Как в statusFlag: statusJSON[$('#statusFlag').val()] ?
Показать ещё 2 комментария
Теги:
backbone.js

2 ответа

1

Я не уверен, что это работает, но дайте ему попробовать

$("#statusFlag").change(function() {
   self.model.set({
      statusFlag: $('#statusFlag').val().toLowerCase() == "true" ? true : false
   });
});
  • 0
    Thx ... Но на самом деле есть 3 возможных значения в моем случае ... "true", "false" и "" ... последнее, если ничего не выбрано (- Select -)
0

Поскольку фактическое "значение" элемента представляет собой строку, а .val() возвращает строку, чтобы получить логическое значение, вам нужно будет изучить эту строку и вернуть собственное логическое значение. Что-то вроде того:

statusFlag: $('#statusFlag').val() == 'true'

Это должно установить statusFlag в true если строки совпадают, в противном случае - false.

Как я могу гарантировать, что для statusFlag установлено только логическое значение?

Определите "обеспечить" в этом случае. Вышеприведенный пример всегда устанавливает statusFlag в логическое значение, потому что сравнение == всегда приводит к логическому значению. Однако другой код в другом месте может установить statusFlag на что угодно. JavaScript динамически типизирован, поэтому нет никакого способа гарантировать от самого свойства, что он будет когда-либо установлен только для определенного типа.

Возможно, вы можете обернуть свойство в закрытии (сделав его "закрытым") и выставить пользовательскую функцию настройки, которая будет внутренне проверять все, что передается ей, и только когда-либо установить это значение в логическое. Но это кажется излишним, тем более, что в этот момент не имеет значения, какой тип он имеет, так как он в частном порядке инкапсулирован.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню