【问题标题】:HTML Checkbox - save value as "Yes" / "No" instead of "true" / "false" in database (Javascript)HTML 复选框 - 在数据库中将值保存为“是”/“否”而不是“真”/“假”(Javascript)
【发布时间】:2018-08-12 02:38:18
【问题描述】:

我想在数据库中将复选框值保存为“是”/“否”而不是“真”/“假”。我正在使用 reactjs 来获取值并存储在数据库中。

请在下面找到我正在尝试的代码。

handleInputChange(e) {
    const target = e.target;
    const name = target.name;
    const item = this.state.item;
    const value = target.type === 'checkbox' ? target.checked : target.value;
    if( name === "should_create" && value === false )
        {
            this.state.item.should_create="No";
        }
    else if( name === "should_create" && value === true )
        {
            this.state.item.should_create=="Yes";

        }
    else
        {
            this.state.item.should_create=="";
        }
            item[name] = value;
            this.setState({ item: item });

    }

HTML 复选框代码:

<input name="should_create" checked={this.state.item.should_create==true ? "true":''} type="checkbox" value={ this.state.item.should_create } onChange={ this.handleInputChange } />

但是,上面的代码不能正常工作。它仅存储默认值“true”/“false”。如何将其更改为“是”/“否”值?

我有多个“复选框”组件,但我想要这个“是”/“否”选项仅用于一个组件。其余组件应为默认组件。

【问题讨论】:

  • 你的方法是完全错误的。 “检查与否?”状态checked 属性的存在与否而不是 value 来描述。 value 用于区分具有相同名称的多个复选框(例如“检查所有适用”问题)。更重要的是,数据库通常支持布尔字段(true / false),您不应该尝试在其中存储“是”和“否”,而是在 视图中做一些事情 当您将数据库呈现为文本时(注意“作为文本”,而不是复选框!)
  • should_create 将不存在
  • 为什么要使用yes/no而不是true/false?有什么需求?

标签: javascript html reactjs checkbox


【解决方案1】:

您使用== 作为赋值,但它与=== 几乎相同(一个返回真或假的表达式)

所以最好先创建一个变量然后更新状态

let shouldCreate = ''

if (name === 'should_create') {
  shouldCreate = value ? 'Yes' : 'No'
}

item[name] = value;
this.setState({ item: item });

可能对https://codesandbox.io/s/v8v267m23l有帮助

【讨论】:

  • 使用value === true 完全是废话。 在条件中,表达式总是返回一个布尔值。要检查是否为真,请使用value,检查是否为假请使用!value
  • @MarkusZeller 我只是从问题中复制了表达式,我完全同意你的观点,但这部分与答案和最初的问题无关
  • @MarkusZeller 无论如何,我会根据您的建议更新答案,谢谢!
  • 也不需要复杂的if语句。 shouldCreate = (name === "should_create" &amp;&amp; value) ? "Yes" : "No";
  • 抱歉唠叨了,但是为什么要多加一个 if 呢?这没有必要。 let shouldCreate = (name === "should_create" &amp;&amp; value) ? "Yes" : "No";就够了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-07
  • 1970-01-01
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多