Javascript为下拉菜单设置布尔值

Javascript set boolean value for dropdown

本文关键字:布尔值 设置 下拉菜单 Javascript      更新时间:2023-09-26

我有下面的代码映射"活跃"为真和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设置布尔值?

我不确定这是否有效,但请尝试一下

$("#statusFlag").change(function() {
   self.model.set({
      statusFlag: $('#statusFlag').val().toLowerCase() == "true" ? true : false
   });
});

由于元素的实际"值"是一个字符串,.val()返回一个字符串,要获得一个布尔值,您需要检查该字符串并返回您自己的布尔值。像这样:

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

如果字符串匹配,则将statusFlag设置为true,否则设置为false

如何确保仅为statusFlag设置布尔值?

在这种情况下定义"ensure"。上面的示例总是将statusFlag设置为布尔值,因为==比较总是产生布尔值。但是,其他地方的代码可以将statusFlag设置为任何值。JavaScript是动态类型的,所以没有办法从属性本身保证只会被设置为特定的类型。

也许可以将属性包装在闭包中(使其"私有"),并公开一个自定义setter函数,该函数将在内部检查传递给它的任何值,并且只将该值设置为布尔值。但这似乎有点小题大做,特别是因为在这一点上,它是什么类型并不重要,因为它是私有封装的。