繁体   English   中英

JS输入文本将值转换为整数/数字/数字以进行比较

[英]JS Input text convert value to integer/number/numeric for comparison

不能以任何方式将输入文本的值转换为数字! 尝试过JS Number(input.val())还parseInt(input.val(),10)一元+ input.val()...如果小于或等于,我需要输入通过条件语句进行比较。

有人问,我需要输入字段为文本类型,因为Im使用了插件jquery旋钮。 知道输入类型的编号。

真心感激任何抬头..不可能是没有办法强迫这种转换。

**更新** Myabe我忘记添加的内容是我在遍历具有相同类的输入,然后使用this.val()作为我已经解决的问题,我已经阅读但仍然不明白为什么读取元素必须使用其#id进行调用。 在我的情况下无法做到这一点。 在这里摆弄

 $('.hello').each(function () {
  var temp = $(this).val();
  console.log(+temp + "  , " + parseInt(temp, 10) + "   , " + temp +"    , "+Number(temp)+"   ,"+$(this).val());
 if (!$(this).val() <= 1) {
   $(this).val(--temp).trigger('change');
 }

});

您提供的小提琴有这个if条件:

 var temp = $(this).val();
 if (!$(this).val() <= 1) {
     $(this).val(--temp).trigger('change');
 }

实际上,此代码会减少输入中的值。 但这几乎是“意外”的结果。

if条件存在一些问题:

  1. val()的结果是一个字符串,而您似乎期望使用数字。 您可以通过在其前面加上+来将其转换为数字。 尽管您在console.log执行了该操作,但是您根本不会使用该结果。
  2. 负数( ! )仅适用于该值,不适用于整个<=表达式,因为! 优先于<= 因此,您应该使用方括号来赋予<=优先级,或者应该使用>来代替! 操作员。

这是更正的相同代码:

 var temp = +$(this).val();
 if (temp > 1) {
     $(this).val(--temp).trigger('change');
 }

该代码的效果是相同的:所有值都递减,因为您输入的值都大于1(20、30、40、50)。

纠正小提琴

您正在使用Jquery吗? 您不需要显式转换:

if($("#inp").val() > 5){
alert("Greater than 5");
}else{
alert("Less than 5");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM