我需要比较值并返回消息。但是总是返回消息。我该怎么做?
使用Javascript:
function Calculation() {
var grid = document.getElementById("<%=gvGoodReceived.ClientID%>");
for (var i = 0; i < grid.rows.length - 1; i++) {
var txtcurrentrcvamount = $("input[id*=txtrcvQuantity]")
var cell = $("#gvGoodReceived").find("tr:eq(0)").find("td:eq(2)").text();
}
if (txtcurrentrcvamount > cell) {
alert("Receive quantity must be less or equal PO quantity");
return false;
}
return true;
}
答案 0 :(得分:3)
您需要获取输入的value:
var txtcurrentrcvamount = $("input[id*=txtrcvQuantity]").val()
// ^^^^^^
由于您要比较数字,val()
和text()
返回字符串,因此您应该在进行比较之前将值转换为数字:
if (Number(txtcurrentrcvamount) > Number(cell))
请注意Number(someStringThatIsNotANumber)
将返回NaN
答案 1 :(得分:1)
因为变量 (txtcurrentrcvamount)
的范围在for循环之间受到限制,这就是为什么它不能在循环范围之外工作。
有关详细信息,您可以查看此帖子... scope of variables
在 if condition 中使用此变量时,您已在 for循环之前初始化它...
修改强>
试试这可能对你有帮助。我认为还有一些其他发现假设您的网格中有两行,那么您要检查哪一行值,因为这总是返回最后一行值 ...并且如果两个行都有一个数字值变量赋值txtcurrentrcvamount ,cell
然后它应该完美地工作。
function Calculation() {
var grid = document.getElementById("<%=gvGoodReceived.ClientID%>");
var txtcurrentrcvamount ;
var cell;
for (var i = 0; i < grid.rows.length - 1; i++) {
txtcurrentrcvamount = $("input[id*=txtrcvQuantity]").val();
cell = $("#gvGoodReceived").find("tr:eq(0)").find("td:eq(2)").text();
}
if (Number(txtcurrentrcvamount) > Number(cell)) {
alert("Receive quantity must be less or equal PO quantity");
return false;
}
return true;
}