Javascript 按钮可以';不能启用
在我的文本框中有2个输入后,我的按钮无法启用。我不知道如何执行此操作。我的按钮是Javascript 按钮可以';不能启用,javascript,Javascript,在我的文本框中有2个输入后,我的按钮无法启用。我不知道如何执行此操作。我的按钮是。我认为这是因为残疾人,我的整个功能不工作。。。但我不知道还有什么其他方法可以实现它 <script> function validate() { var values = document.getElementById("digit").value; if(values<0)
。我认为这是因为残疾人,我的整个功能不工作。。。但我不知道还有什么其他方法可以实现它
<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(“禁用”);`然后看看控制台,如果它没有记录消息,那么您犯了一个逻辑错误,您必须检查您的日志