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

时间:2016-06-28 17:51:11

标签: javascript jquery string integer

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

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

真的很感激任何抬头......不可能没有办法强制进行这样的转换。

**更新** Myabe我忘了添加,我读过但仍然不明白为什么,是我迭代通过具有相同类的输入然后使用this.val(),作为修复我读过必须使用#id调用元素。在我的情况下不能这样做。 fiddle here

 $('.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');
 }

});

2 个答案:

答案 0 :(得分:2)

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

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

事实上,输入中的值会被此代码递减。但这几乎是由于事故而导致的。这就是效果。

if条件存在一些问题:

  1. val()的结果是一个字符串,而您似乎期望一个数字。您可以通过在+前添加前缀来将其强制转换为数字。虽然您在console.log中执行此操作,但您根本不会使用该结果。
  2. 否定(!)仅适用于值,而不适用于整个<=表达式,因为!优先于<=。因此,您应该使用括号来提供<=优先权,或者您应该使用>而不使用!运算符。
  3. 以下是相同的代码更正:

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

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

    Corrected fiddle

答案 1 :(得分:0)

你在使用Jquery吗?您不需要明确的转换:

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