Javascript 好奇';onchange';事件行为

Javascript 好奇';onchange';事件行为,javascript,html,forms,Javascript,Html,Forms,表单提交按钮前的最后一个HTML5输入字段是一个垃圾邮件过滤器,要求用户在将表单提交到单独页面进行php处理之前,先解出一个简单的代数方程,该方程解析为4。输入字段(type=number,name=ebot)监视onchange事件,如果检测到,则调用函数。当我输入一个无效值并单击“提交”时,表单传递给php 然后,我对函数进行了精简,如下所示,以找出原因 function chkEvent() { var elemValue = document.forms['eFields']['eB

表单提交按钮前的最后一个HTML5输入字段是一个垃圾邮件过滤器,要求用户在将表单提交到单独页面进行php处理之前,先解出一个简单的代数方程,该方程解析为4。输入字段(type=number,name=ebot)监视onchange事件,如果检测到,则调用函数。当我输入一个无效值并单击“提交”时,表单传递给php

然后,我对函数进行了精简,如下所示,以找出原因

function chkEvent() {
  var elemValue = document.forms['eFields']['eBot'].value;
  alert(elemValue);
}
现在,在输入字段(ebot)中输入任何内容都可以确认三(3)件事:

  • 单击submit会触发ebot的onchange事件并停止提交过程
  • onchange事件调用函数chkEvent
  • 警报框正确显示了用户输入的值
  • 然后我恢复了chkEvent的原始结构

    function chkEvent() {
      var elemValue = document.forms['eFields']['eBot'].value;
      if(elemValue <> 4) {
        document.eFields.esubmit.disabled=true;
        alert("Please solve correctly for x.");
      } else {
        document.eFields.esubmit.disabled=false;
      }
    }
    
    函数chkEvent(){
    var elemValue=document.forms['eFields']['eBot'].value;
    if(elemValue 4){
    document.eFields.esubmit.disabled=true;
    警报(“请正确解决x.”;
    }否则{
    document.eFields.esubmit.disabled=false;
    }
    }
    
    现在,无论在垃圾邮件过滤器中输入了什么,表单在单击submit时都会传递给php。同样的行为在Chrome、Firefox和IE中也有体现。我可能已经关注这个问题太久了,但请不要给出非JavaScript的建议。时间限制使我无法学习一门新语言


    我经常受益于这个论坛上的巨大技能和专业知识。谢谢大家

    不是有效的javascript运算符。使用
    =
    相反,假设你的意思是
    不等于“

    我会说你所做的可能会阻止大约1%的垃圾邮件流量,因为大多数垃圾邮件机器人甚至不运行真正的浏览器,更不用说遵守页面上可能阻止表单提交的JS代码了。他们只需刮取表单内容,将变量直接发布到您的action=”“脚本,然后转到下一页。@Brian说了什么。如果有的话,应该使用JavaScript提交表单,而不是阻止表单。但是你会锁定任何禁用JS的人。同时尝试将
    if(elemValue 4){
    更改为
    if(elemValue==4){
    或者可能将
    4
    更改为
    '4'
    我相信从文本输入返回的类型是字符串,而不是整数,因此您可能会遇到类型问题。您的代码没有运行,因为它包含语法错误,并且正在执行提交按钮的默认行为。请查看您的浏览器控制台。@Brian I想想他/她想要的是
    elemValue!==“4”
    。谢谢你,乔纳森。我把自己带到了木棚,在那里我重复了5次,“JavaScript不是php,JavaScript不是php…”-D捕捉得好,眼神好。再次感谢!!