java脚本仅按数字检查两个输入值

时间:2017-04-07 12:39:49

标签: javascript jquery html

var tbv = document.getElementById("inputFrom");
var tbb = document.getElementById("inputTo");
var submit_check = document.getElementById("checkValues");


function blr() {
  var von = tbv.value;
  var bis = tbb.value;

  console.log(von);
  console.log(bis);

  if (von >= bis || bis <= von) {
    checkValues.disabled = true;
  } else {
    checkValues.disabled = false;
  }

}
tbv.addEventListener("blur", blr);
tbb.addEventListener("blur", blr);
From: <br>
<input type="text" class="form-control" pattern="(|-)?[0-9]{0,3}?" title="Min: -100" id="inputFrom" />
<br> To: <br>
<input type="number" class="form-control" pattern="(|-)?[0-9]{0,3}?" title="Max: 300" id="inputTo" />
<br>
<button type="submit" class="btn btn-primary" id="checkValues"> Check </button>

正如我上面所解释的,我想检查输入“From”的值是否大于或等于输入“To”。

问题是,这只能通过检查数字的数字来起作用,因此如果输入“From”的值为12且输入“To”的值为1,则它是正确的。

任何人都知道我做错了什么?

6 个答案:

答案 0 :(得分:1)

试试这个

function blr() {
var von = parseint(tbv.value);
var bis = parseint(tbb.value);

console.log(von);
console.log(bis);

if (von >= bis) {
 checkValues.disabled = true;
} else {
  checkValues.disabled = false;
}

}
tbv.addEventListener("blur", blr);
tbb.addEventListener("blur", blr);

我有jsut将输入解析为Integer然后进行比较,并且不需要像两个方向那样进行比较,例如&gt; = b和b&lt; = a。-silly

答案 1 :(得分:0)

使用parseInt()。由于您将textbox的值作为字符串,因此需要将字符串转换为数字

var tbv = document.getElementById("inputFrom");
var tbb = document.getElementById("inputTo");
var submit_check = document.getElementById("checkValues");


function blr() {
  var von = parseInt(tbv.value);
  var bis = parseInt(tbb.value);

  console.log(von);
  console.log(bis);

  if (von >= bis) {
    checkValues.disabled = true;
  } else {
    checkValues.disabled = false;
  }

}
tbv.addEventListener("blur", blr);
tbb.addEventListener("blur", blr);
From: <br>
<input type="text" class="form-control" pattern="(|-)?[0-9]{0,3}?" title="Min: -100" id="inputFrom" />
<br> To: <br>
<input type="number" class="form-control" pattern="(|-)?[0-9]{0,3}?" title="Max: 300" id="inputTo" />
<br>
<button type="submit" class="btn btn-primary" id="checkValues"> Check </button>

答案 2 :(得分:0)

Javascript输入很松散。它在第一次加载数据时得到它们的类型,但是可以在它们的生命周期内改变类型。

当你创建一个变量并用输入中的数据加载它时,它被认为是一个字符串,字符串比较是逐个字符而不是整体。

如果使用parseInt()或parseFloat()将值转换为int或float,则可以解决问题。

答案 3 :(得分:0)

一开始你不需要这部分的OR部分 - CanvasRenderingContext2D.imageSmoothingEnabled - 你可以使用(von >= bis || bis <= von)

如果值总是数字,那么您可以通过在它们之前加上一个加号来强制转换它们,如下所示:

(von >= bis)

答案 4 :(得分:0)

默认情况下.value会返回一个字符串,因此请使用parseInt()将值解析为数字。

注意: von >= bisbis <= von表示相同。使用任何一个就足够了。

var tbv = document.getElementById("inputFrom");
var tbb = document.getElementById("inputTo");
var submit_check = document.getElementById("checkValues");


function blr() {
  var von = parseInt(tbv.value);
  var bis = parseInt(tbb.value);

  console.log(von);
  console.log(bis);

  if (von >= bis) {
    checkValues.disabled = true;
  } else {
    checkValues.disabled = false;
  }

}
tbv.addEventListener("blur", blr);
tbb.addEventListener("blur", blr);
From: <br>
<input type="text" class="form-control" pattern="(|-)?[0-9]{0,3}?" title="Min: -100" id="inputFrom" />
<br> To: <br>
<input type="number" class="form-control" pattern="(|-)?[0-9]{0,3}?" title="Max: 300" id="inputTo" />
<br>
<button type="submit" class="btn btn-primary" id="checkValues"> Check </button>

答案 5 :(得分:0)

同意David Thomas。您需要将字符串转换为数字。 由于您已在输入框中使用正则表达式,请尝试使用Number对象将字符串文字转换为Number,然后进行比较。

function blr() {
  var von = Number(tbv.value);
  var bis = Number(tbb.value);

  console.log(von);
  console.log(bis);

  if (von >= bis) {
    checkValues.disabled = true;
  } else {
    checkValues.disabled = false;
  }

}

有关Number对象访问的更多详细信息 this link