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,则它是正确的。
任何人都知道我做错了什么?
答案 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 >= bis
和bis <= 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