如何使用JQuery在文本框中显示特定文本?

时间:2016-09-02 01:27:33

标签: jquery

我使用以下代码计算总共5个不同输入的平均值。

var total = p1 + p2 + p3 + p4 + p5;
var priority = total / 5;

我试图根据变量优先级的值在文本框中显示“高”,“中”和“低”:

我已经使用过这段代码,但似乎没有什么是正确的,请帮助:

if (5 > priority > 4)
{
    $("#textbox").val('High');
} else if (4 > priority > 2.5)
{
    $("#textbox").val('Medium');
} else if (2.5 > priority > 0)
{
    $("#textbox").val('Low');
}

2 个答案:

答案 0 :(得分:2)

您可以使用.val(function)条件运算符;如果priority大于4将元素value设置为"High";如果priority大于2.5设置值为"Medium"; else将值设置为"Low"

$("#textbox").val(_, function(val) {
  return priority > 4 ? "High" : priority > 2.5 ? "Medium" : "Low"
});

答案 1 :(得分:2)

if (5 > priority > 4)

不是测试priority5之间4是否正确的正确方法。表达式被解析为5 > (priority > 4)(priority > 4)评估为truefalse,然后与1进行比较时转换为05。因此,这将是5 > 15 > 0,并且它们都是真的。

正确的方法是:

if (5 > priority && priority > 4)

但是真的没有必要测试priority是否介于值之间。每个else if仅在前一个if失败时才会运行。因此,如果您到达第二个if,您已经排除了priority > 4的情况,因此您不需要再次测试它。此外,当priority完全等于其中一个边界值时,您的所有情况都不会成功;在priority == 4时,priority > 4priority < 4都会将其排除在外。因此,只需检查范围的一端,另一端将自行处理。

所以代码应该是:

if (priority > 4) {
    $("#textbox").val("High");
} else if (priority > 2.5) {
    $("#textbox").val("Medium");
} else {
    $("#textbox").val("Low");
}