JavaScript 函数在更改为文本框时始终返回 true

javascript function always returning true while change to textbox

本文关键字:返回 true 文本 函数 JavaScript      更新时间:2023-09-26
 function CheckLength(currentValue)
{
    var IsValid = true;
    if(currentValue>24)
    {
        alert("you can't enter more than 24 hours.");
        IsValid= false;
        //alert(IsValid);
    }
    else
    {
        return IsValid;
    }
}
function getHours(recordid,rowid,TsrDetailsId,effort) {
    debugger;
    var value= CheckLength(1);
    alert(value);
<input id="@("effort_" + items.RecordId+"_"+i)" type="text" title="@Model.TsCommentsLst[items.RecordId][i]" onkeyup=" return CheckLength(this.value);" style="width:60px" class="effortinput" onchange="getHours(@items.RecordId,@i,@items.TsrDetailsId,this.value)"  value="@Model.EffortList[items.RecordId][i]" />

**这是我的函数,而返回它给出了正确的函数。 如果我调用另一个函数,它总是返回 true。 那就是 gethours,function.in getHours 函数它总是返回 true。

**

您的问题是代码仅在 is 有效时才返回值。此外,输入总是返回一个字符串this.value因此我们需要使用 parseInt 函数。

function CheckLength(currentValue) {
  currentValue = parseInt(currentValue);
  var IsValid = true;
  if (currentValue >= 24) {
    alert("You can't enter more than 24 hours.");
    IsValid = false;
  }
  return IsValid;
}

您正在检查实际输入而不是其长度。相反,请使用

if(currentValue.length > 24){
        alert("you can't enter more than 24 hours.");
        IsValid= false;
        //alert(IsValid);
}

如果比较两个数字,你应该使用parseInt函数。

if (parseInt(currentValue) > 24)

您甚至可以声明一个变量并将输入值分配给该变量,并检查该变量是否大于 24。

<input type="text" name="myInput" size="20" id="abc"><!--giving an id-->
<script>
var a=document.getElementById('abc').value;
if (a>24){
    alert("The field cannot contain more than 5 characters!")
    return false
} else {
    return true
}
</script>