【问题标题】:why is html5 form input saying required when optional为什么html5表单输入在可选时说是必需的
【发布时间】:2014-07-14 01:17:02
【问题描述】:

所以我有一个带有输入字段的 html5 表单。假设这些字段是名字、姓氏、电话、电子邮件和地址。

现在,名字、姓氏和地址是必需的,而电话和电子邮件是可选的。我知道后端已正确配置。但是在 html5 表单上,它不会让我在没有电话或电子邮件的情况下提交,否则它会返回 400 错误。

如果我从 html5 表单中删除可选项,它会让我提交它,或者我可以输入一个 value=" " 并提交。我什至可以使用 :required 和 :optional 用 CSS3 标记字段,它会正确显示,但仍然不允许我提交。

现在我显然不能只从 html 中删除可选项,因为有些用户可能需要这些字段,但我也不想为不需要的用户发送默认值“”或“n/a”需要他们。我只是在这里做错了什么还是什么?我不明白发生了什么。

编辑 2:这是一个使用 Hapi.js 和 Joi 验证、请求和 couchdb 的 node.js api。

编辑:我知道 400 是一个服务器错误,但是如果我发布一个 curl 省略了可选的,它会正常运行。当我从 html 中删除可选的选项时,它也很顺利,这就是为什么它没有意义。这是 api 的验证码服务器端。

handler: function(req, res) {
request({
        method: 'POST',
        uri: 'https://127.0.0.1:6984/banned',
        jar: cookieJar,
        strictSSL: false,
        json: {
            firstn: req.payload.firstn,
            lastn: req.payload.lastn,
            licno: req.payload.licno,
            phone: req.payload.phone,
            email: req.payload.email,
            address: req.payload.address,
            description: req.payload.description
        }
    },
    function(err, resp, body) {
        if (err) { res(err) };

        if (resp.statusCode === 401) {
            res(resp.statusCode + ' Please log in.');
        }
        else if (resp.statusCode === 201) {
            res(body);
        }
    });
},
validate: {
    payload: {
        firstn: Joi.string().required(),
        lastn: Joi.string().required(),
        licno: Joi.string().optional(),
        phone: Joi.string().optional(),
        email: Joi.string().optional(),
        address: Joi.string().optional(),
        description: Joi.string().required()
    }
}

【问题讨论】:

  • 服务器端出现 400 错误。向我们展示服务器代码。
  • 400 用于 HTML5 验证!!!
  • 您使用的是 Javascript 框架还是某种库?如果是这样,请在您的问题中添加标签或解释。

标签: html node.js forms input


【解决方案1】:

所以一个朋友帮我弄清楚了。发生的情况是,如果没有输入数据,则 html 表单是否需要发送值为“”。那不是“”,“null”,“undefined”只是“”。这不是服务器的有效值,因此会引发 400 错误。修复它的代码是通过在验证和发送之前检查有效负载是否存在。

【讨论】:

    猜你喜欢
    • 2012-12-14
    • 1970-01-01
    • 2011-07-12
    • 2012-06-14
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多