在表单中输入数字的javascript问题

时间:2015-07-23 09:10:37

标签: javascript string

我输入的是带有年龄字段的HTML格式的年龄。我想将年龄输入作为数字,所以我将年龄字段定义为数字类型。我正在检查javascript代码if(typeof name === "string" && isNaN("age") ==="false")。我在调试过程中发现typeof age string 。我不知道它是如何转换为字符串类型的自动。 我附上了我的HTML和javascript代码.Plz帮助...

<!DOCTYPE html>
<html>

<head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-        1.11.3.min.js"></script>
</head>
<script src="form_js.js"></script>

<body>
    <form id="myForm">
        First Name:
        <input type="text" id="field1">
        <br> Last Name:
        <input type="text" id="field2">
        <br> Age:
        <input type="number" id="field3">
        <br>
        <br> Gender:
        <select id="field5">
            <option value="Male">Male</option>
            <option value="Female">Female</option>
        </select>
    </form>
    <p>
        <input type="button" onclick="insRow('Table1')" value="Insert">
    </p>
    <table id="Table1" style="width:100%">
        <tr>
            <td>Name</td>
            <td>Age</td>
            <td>Gender</td>
        </tr>
    </table>
</body>

</html>

使用Javascript:

var count = 0;

function insRow() {
    count += 1;
    var x, y, z, a, w;

    var w = document.getElementById('Table1').insertRow(count);
    var name = $("#field1").val() + " " + $("#field2").val();
    //var age = $('#field3').val();
    //var age = $('#myForm :field3');
    //var Email = $("#field4").val();
    var gender = $("#field5").val();

    //w = document.getElementById('Table1').insertRow(count);
    //var first_name = document.getElementById("field1").value;
    //var last_name = document.getElementById("field2").value;
    var age = document.getElementById("field3").value;
    //var gender = document.getElementById("field5").value;
    if (typeof name === "string") //&& isNaN("age") ==="false")
    {

        x = w.insertCell(0);
        y = w.insertCell(1);
        a = w.insertCell(2);

        x.innerHTML = name //" " + last_name;
        y.innerHTML = age;
        a.innerHTML = gender;
        document.getElementById("myForm").reset();
    } else alert("Invalid Data");
    //var rows += "<tr><td>" + name + "</td><td>" + age + "</td><td>" + Email + "</td><td>" + Gender +"</td></tr>";
    //$("#Table1 tbody").append(rows);


}

2 个答案:

答案 0 :(得分:3)

当您从HTML获取任何值时,默认情况下为string。要将其转换为数字,请根据您的要求使用parseIntparseFloat

  

parseInt()函数解析字符串参数并返回指定基数的整数(数学系统中的基数)。

var age = parseInt(document.getElementById("field3").value, 10);

OR

  

parseFloat()函数解析字符串参数并返回浮点数。

var age = parseFloat(document.getElementById("field3").value);

当您检查NaN时,请使用不带引号的变量age。严格比较false应该没有引号。

isNaN("age") ==="false")

应该是

isNaN(age) === false) // Without quotes for age and false

答案 1 :(得分:0)

请注意document.getElementById(someId).value将始终返回字符串类型(如果有)。有几种解析方法,例如parseInt()parseFloat()以及+()

&#13;
&#13;
var str = document.getElementById('num').value;
var num = +(str);
alert("Type of " + num + " is " + (typeof num));

var price = +(document.getElementById('price').value);
alert("Type of " + price + " is " + (typeof price));
&#13;
<input type="text" id="num" value="56" />
<input type="text" id="price" value="9.13" />
&#13;
&#13;
&#13;