如何获取数字输入值作为数字而不是字符串?

How can I get a number input value as a number instead of a string?

给定一个数字输入:

<input type="number" id="create-y-small" name="create-y-small" value="0">

如何获取输入的数字值?下面returns一个字符串:

$("#create-y-small").val()

为什么这是默认行为?当然应该期望数字类型输入给出一个数字?

我在别处寻找答案但没有找到答案:

Input value is a string instead of a number - 答案使用解析来解析为数字。我不想解析为数字我只想将数字作为数字获取。

- OP 似乎很高兴获得字符串形式的值

- 同样的故事

https://www.codegrepper.com/code-examples/javascript/how+to+get+the+value+of+input+number+using+jquery - 同样的故事

所有输入元素都以HTMLreturn一个字符串作为它们的值。如果你想要结果为int,你必须转换它。

parseInt($("#create-y-small").val())

您可以使用 jQuery 的 valHooks 来更改 jQuery return 的值。

$.valHooks.number = {
  get: function( elem ) {
    return elem.value * 1;
  }
};

您只需在代码中执行一次,然后所有 type=number 输入都将 return 改为一个数字。

console.log(
  "num is a string",
  $("#num").val() === "1", 
  $("#num").val() === 1, 
  $("#txt").val() === "1",
  $("#txt").val() === 1)

$.valHooks.number = {
  get: function( elem ) {
    return elem.value * 1;
  }
};

// confirm no neffect on type='text'
console.log(
  "num is a number",
  $("#num").val() === "1", 
  $("#num").val() === 1, 
  $("#txt").val() === "1",
  $("#txt").val() === 1)
  
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type='number' id='num' value="1">
<input type='text' id='txt' value="1">