【发布时间】:2014-11-27 20:45:55
【问题描述】:
我们需要让用户在<input type='number'> 中输入一个数字,如果它是负数,则应用negative 样式,这将使显示的文本变为红色。但是,我无法让 if 语句正常工作。
HTML:
<span class="input">
<input type="text" value="-">
<input type="number" class="hidden">
</span><br>
<span class="input">
<input type="text" value="-">
<input type="number" class="hidden">
</span>
$(this).prev().addClass('negative'); 在下面的if 语句中不起作用:
$(document).ready(function(){
$('.input [type="text"]').on('focus', function(){
$(this).next().removeClass().focus();
$(this).addClass('hidden');
});
$('.input [type="number"]').on('blur', function(){
var number = Math.round($(this).val() * 100) / 100;
var text = number.toFixed().toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
if (number < 0) {
$(this).prev().addClass('negative');
text = "("+text.replace(/-/g,"")+")";
}
if (!number) {text = "-";}
$(this).prev().val(text);
$(this).prev().removeClass();
$(this).addClass('hidden');
});
});
Fiddle。如果您将其从if 语句中取出,它将起作用,所以问题似乎是$(this) 没有进入if 语句。 (编辑:似乎我对此的假设不正确。请参阅下面的 cmets。)These two 类似的问题使用 .filter 来解决此问题,但我无法弄清楚如何使用上面的代码使其工作。
那么我该如何让它工作呢?
【问题讨论】:
-
你的问题在别处,在if语句中使用
$(this)是正确的。你的小提琴应该做什么?每次我点击黄色输入时它都会消失 -
if 语句块没有不同的范围,所以
$(this)“没有进入 if” 是不正确的 -
现在我真的很茫然。
.replace()函数在if语句中运行,$(this).prev().addClass('negative');在if语句之外运行,所以我认为我已经缩小了导致问题的范围。 -
这是jsfiddle.net/00pxe49t/8你想要的吗?
-
标签: javascript jquery html