Javascript 按钮可以';不能启用

Javascript 按钮可以';不能启用,javascript,Javascript,在我的文本框中有2个输入后,我的按钮无法启用。我不知道如何执行此操作。我的按钮是。我认为这是因为残疾人,我的整个功能不工作。。。但我不知道还有什么其他方法可以实现它 <script> function validate() { var values = document.getElementById("digit").value; if(values<0)

在我的文本框中有2个输入后,我的按钮无法启用。我不知道如何执行此操作。我的按钮是
。我认为这是因为残疾人,我的整个功能不工作。。。但我不知道还有什么其他方法可以实现它

 <script>
function validate() 
    {
        
            var values = document.getElementById("digit").value;
            if(values<0)
            {
                    document.getElementById("numbers").innerHTML = "This is not a number, number must be greater or equal to zero"
                    return false
            }
            else if (!(typeof +values && values >= 0)|| values.trim() == "") 
            {
                    document.getElementById("numbers").innerHTML = "Fill in a number";
                    return false;
            }
            else if (values>=0)
            {
                    document.getElementById("numbers").innerHTML = "";
            }
        
            var values1 = document.getElementById("digit1").value;
            if(values1<0)
            {
                    document.getElementById("numbers1").innerHTML = "This is not a number, number must be greater or equal to zero"
                    return false
            }
            else if (!(typeof +values1 && values1 >= 0)|| values1.trim() == "") 
            {
                    document.getElementById("numbers1").innerHTML = "Fill in a number";
                    return false;
            }
            else if (values >= values1)
            {
                    document.getElementById("numbers1").innerHTML = "Highest number is smaller than lowest number";
                    return false;  
            }
            else if (values1 > values)
            {
                    document.getElementById("numbers1").innerHTML = "";
            }
        
        
            if((document.getElementById("digit").value>0) && (document.getElementById("digit1").value>0))
            {
            document.getElementById("rand").removeAttribute('disabled');
            }
            else
            {
            document.getElementById("rand").setAttribute('disabled', 'disabled');
            }
        
    }
    
     
</script>

函数验证()
{
var值=document.getElementById(“数字”).value;
如果(值=0)| |值。修剪()=“”)
{
document.getElementById(“数字”).innerHTML=“填写数字”;
返回false;
}
else if(值>=0)
{
document.getElementById(“数字”).innerHTML=“”;
}
var values1=document.getElementById(“digit1”).value;
如果(值1=0)| |值1.trim()=“”)
{
document.getElementById(“numbers1”).innerHTML=“填写数字”;
返回false;
}
else if(值>=值1)
{
document.getElementById(“numbers1”).innerHTML=“最高数字小于最低数字”;
返回false;
}
else if(值1>值)
{
document.getElementById(“numbers1”).innerHTML=“”;
}
if((document.getElementById(“digit”).value>0)和&(document.getElementById(“digit1”).value>0))
{
document.getElementById(“兰德”).removeAttribute(“禁用”);
}
其他的
{
document.getElementById(“兰德”).setAttribute(“已禁用”、“已禁用”);
}
}
这是我的密码

<body>
<table style="border-collapse: collapse" width="100%">  
<form action="random" method="get" onSubmit="return validate()">
        <tr>
            <td>
            Lowest number: 
            <input id="digit" type="text" name="lowestnumber">
            <span id="numbers"></span>
            <br/>
            </td>
        </tr>
        <tr>
            <td>
            Highest number:
            <input id="digit1" type="text" name="highestnumber">  
            <span id="numbers1"></span>    
            </td>
        </tr>
        <tr>
            <td>
                <input id="rand" type="submit" value="submit" disabled><br/>
                <input id="randno" type="text"><br/>
            </td>
        </tr>
        <tr>
            <td>
                <input id="guess" type="text"><br/>
                <input id="guessbut" type="button" value="" >
            </td>
        </tr>
        <br/>
</form>
</table>
</body>

最低人数:

最高人数:




通过使用
removeAttribute('disabled')
以正确的方式启用按钮。可能您只是犯了一些逻辑错误,因此无法访问removeAttribute语句。使用console.log()查看它。

我认为一切都很好,除了一个“你从不调用你的javascript!!”。 你的js代码被包装在validate()函数中,你永远不会调用它,所以它不会永远运行。 你可以试着使用

onchange="validate()"
在您的输入中 这就是它的样子

  <tr>
        <td>
        Lowest number: 
        <input id="digit" type="text" name="lowestnumber" onchange="validate()">
        <span id="numbers"></span>
        <br/>
        </td>
    </tr>
    <tr>
        <td>
        Highest number:
        <input id="digit1" type="text" name="highestnumber" onchange="validate()">  
        <span id="numbers1"></span>    
        </td>
    </tr>

最低人数:

最高人数:
我不是一个有经验的编码员,但我在这里读到的是,您试图验证输入表单,然后在此基础上禁用/启用输入字段

首先,最好使用正则表达式验证而不是条件验证输入表单。然后,只要正则表达式为true,就必须使用parseInt()将输入字符串转换为数字(因为所有输入都是字符串类型)。然后你可以进行比较

为了让您理解,我将验证分为三个阶段,我知道这是一段有点混乱的代码,但一切都取决于实现。第一次验证使用正则表达式检查输入,然后第二次验证使用第一个字段检查数字,第三次验证检查是否存在任何消息/文本。如果没有文本,则一切正常,因此启用Rad输入字段

函数首次验证(valueToTest){
//你的正则表达式只匹配正数
var yourRegex=/^[+]?\d+([.]\d+)?$/;
//测试正则表达式,如果为false,则返回消息
是否返回regex.test(valueToTest)?
"" :
“
输入一个数字,该数字必须大于或等于零”; } 函数二次验证(第一次输入,第二次输入){ 返回parseInt(firstInput)最高数字小于最低数字”: ""; } 函数thirdValidation(){ var randField=document.getElementById(“兰德”); var highestMessage=document.getElementById(“message highestnumber”) .innerHTML; var lowestMessage=document.getElementById(“message lowestnumber”).innerHTML; //如果最高消息或最低消息没有消息,则一切正常 randField.disabled=最高消息| |最低消息; } 函数验证(输入字段){ var message=firstValidation(inputField.value); var lowestNumber=document.getElementById(“lowestNumber”); var highestNumber=document.getElementById(“highestNumber”); //输入字段是最大的数字吗?然后进行额外检查 if(输入字段===最高编号) 消息+=第二次验证(最高的number.value,最低的number.value); //在所有检查显示消息nextElementSibling后,将自动转到下一个元素,即span inputField.nextElementSibling.innerHTML=消息; 第三次验证(); }

最低人数:
最高人数:
兰德


请也附加html文件,并将其作为完整的代码片段。@Derek.W如何附加html文件复制并粘贴html代码在问题中,不要向我们提供来自计算机的路径。没有人可以这样做。值和值是数字还是字符串?您开始将它们视为数字,但禁用的检查将它们视为字符串。@Dere.W yep附加了代码您的意思是什么?只需在'document.getElementById(“兰德”).removeAttribute(“禁用”);`然后看看控制台,如果它没有记录消息,那么您犯了一个逻辑错误,您必须检查您的日志