不能以任何方式将输入文本的值转换为数字!尝试过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');
}
});
答案 0 :(得分:2)
您提供的小提琴有if
条件:
var temp = $(this).val();
if (!$(this).val() <= 1) {
$(this).val(--temp).trigger('change');
}
事实上,输入中的值会被此代码递减。但这几乎是由于事故而导致的。这就是效果。
if
条件存在一些问题:
val()
的结果是一个字符串,而您似乎期望一个数字。您可以通过在+
前添加前缀来将其强制转换为数字。虽然您在console.log
中执行此操作,但您根本不会使用该结果。!
)仅适用于值,而不适用于整个<=
表达式,因为!
优先于<=
。因此,您应该使用括号来提供<=
优先权,或者您应该使用>
而不使用!
运算符。以下是相同的代码更正:
var temp = +$(this).val();
if (temp > 1) {
$(this).val(--temp).trigger('change');
}
代码的效果是相同的:所有值都会减少,因为输入的值都大于1(20,30,40,50)。
答案 1 :(得分:0)
你在使用Jquery吗?您不需要明确的转换:
if($("#inp").val() > 5){
alert("Greater than 5");
}else{
alert("Less than 5");
}