找到字符串值,但需要一个整数

时间:2016-04-18 08:13:04

标签: javascript json forms

很长一段时间我一直在使用 vanilla 这样的Javascript:

javascript

序列化表单并通过XMLHttpRequest POST它。但是我注意到这段代码没有正确处理type=number。是否有更好的最小模式?

3 个答案:

答案 0 :(得分:2)

  

type=number input元素表示一个控件,用于将元素的值设置为表示数字的字符串

因此type="Number"的值将是一个字符串,如果转换为有效浮点数Number(YOUR_VALUE)

答案 1 :(得分:1)

正如Rayon Dabre指出的那样,type=number输入仍然是一个字符串。您可以以更智能的方式从表单中收集数据。例如:

// Map of type -> function that converts the value
// Add more converters if you need'em
var type2converter = {number: Number}  

// Converter that does not do anything for fallback
var id = function (x) { return x } 

function getFormData(form) {

    var data = {}
    var converter
    var input

    for (var i = 0; i < form.length; i++) {
        input = form[i]

        if (input.name && input.value) {
            // Get the function that converts the data, or fallback to "dummy-converter"
            converter = converters[input.type] || id
            data[input.name] = converter(input.value)
        }
    }

    return data
}

这样返回的对象将具有您在HTML中定义的类型。它必须在服务器上验证。

答案 2 :(得分:0)

尝试包装调用以检索parseInt()中的值 - 例如

parseInt(input.value);

这将检索表单中值的Integer表示。你可能想要对它进行一些健全性检查,但要确保它是一个int并且不会破坏它的东西。