【问题标题】:why is this JS confirm window not firing on form submit?为什么这个 JS 确认窗口在表单提交时没有触发?
【发布时间】:2013-12-05 18:23:50
【问题描述】:

HTML:

<form name="registerAppointment" method="post" action="formValidations/deleteValidate.php" onSubmit="return verifyForm()">
    <input type="hidden" name="userEmail" value="<?=$_SESSION['Mail']?>" />
    <input type="text" required name="studentId" size="20"/>
    <div class="pageFormResetSubmit">
        <input type="reset" value="Reset" />
        <input type="submit" value="Submit" />
    </div>
</form>

Javascript:

    function verifyForm() {
    if (document.addStudentForm.elements["studentId"].value.length == 9) {
        if (isNaN(document.addStudentForm.elements["studentId"].value)) {
            alert("Please enter only numbers for ID - no dashes or letters.");
            return false;
        }else{
            if( window.confirm("Are you sure you want to delete this student? This action CANNOT BE UNDONE.") ){
                studentIdField.setAttribute("value", document.addStudentForm.elements["studentId"].value);
                userForm.appendChild(studentIdField);
                document.body.appendChild(userForm);
                userForm.submit();
            }
        }
    } 
    else{
        alert("The ID must be 9 characters.");
        return false;
    }
};

submit 按钮被点击时,我希望出现一个确认对话框,允许他们确认或取消。无论出于何种原因,上述代码中的确认都没有触发,并且表单处理时就好像它不存在一样。

【问题讨论】:

  • 您收到警报了吗?你收到哪个警报?只是猜测,但isNaN(document.addStudentForm.elements["studentId"].value) 应该是(document.addStudentForm.elements["studentId"].value != undefined)
  • @RobM。他们试图检查某个东西是否是数字,所以isNaN sorta 完成了他们想要的。例如,isNaN(undefined) == trueisNaN("123") == false。该功能的用途不是很好(请参阅here,因为某些原因它已损坏)但我认为这不是错误...
  • 我明白了,isNaN 是一个糟糕的函数,我的意思是考虑到 NaN 是一个常数,你会认为“是 NaN”只会是 === NaN。无论如何,感谢您指出这一点。
  • @RobM。我没有收到任何警报,表单正在提交,就好像它不存在一样。基本上第一个if() 正在检查是否有足够的长度。然后,它会检查以确保我们正在使用数字(如果不是,则脚本返回false)。否则,这是一个 9 字符长的数字,我想 confirm 他们要删除。如果他们单击是,请提交表单。否则像上面的return false 行一样取消它。
  • 有人吗?认为这是一个简单的解决方法,我只是瞥了一眼……

标签: javascript forms submit confirm


【解决方案1】:

您使用了错误的表单名称:

document.addStudentForm 应该是document.registerAppointment

【讨论】:

  • 你太棒了。不知道我怎么没有注意到这一点。我猜是漫长的一天编码。 :) 谢谢!
猜你喜欢
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多