Javascript 为什么提交验证的表单没有遍历所有的可能性?

Javascript 为什么提交验证的表单没有遍历所有的可能性?,javascript,html,forms,validation,onsubmit,Javascript,Html,Forms,Validation,Onsubmit,第一次在这里发帖,这是对这种无意义的行为感到更加沮丧的最后一个选择。我看不出这个代码段有什么问题,但是onsubmit条件似乎总是返回true,即使我将字段留空(应该当场验证) 注意:我的JS函数目前是空白的,还没有到那个程度 进一步的调查说明:即使我写的最后一个案例是“一网打尽”也不起作用,它只是试图在我点击“提交”时立即进入结帐页面,而完全忽略了“提交”页面 <?xml version = "1.0" encoding = "utf-8" ?> <!DOCTYPE html

第一次在这里发帖,这是对这种无意义的行为感到更加沮丧的最后一个选择。我看不出这个代码段有什么问题,但是onsubmit条件似乎总是返回true,即使我将字段留空(应该当场验证)

注意:我的JS函数目前是空白的,还没有到那个程度

进一步的调查说明:即使我写的最后一个案例是“一网打尽”也不起作用,它只是试图在我点击“提交”时立即进入结帐页面,而完全忽略了“提交”页面

<?xml version = "1.0" encoding = "utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title> Book registration. </title>
    <script type = "text/javascript" src = 'Script/main.js'></script>
</head>

<body>
    <form method = "POST" action = "Checkout" onsubmit = "validate(this)">      
        <fieldset>
        <legend> Book Registry Access </legend>

        <p> ISBN: <input type = "text" size = "14" name = "ISBN" onchange = "if(this.value != '') ajaxVerif('checkISBN', this.value, this.id);"> </p>
        <p> Title: <input type = "text" size = "32" id = "title" name = "title"> </p>
        <p> Author: <input type = "text" size = "32" id = "author" name = "author"> </p>
        <p> Edition: <input type = "text" size = "2" id = "edition" name = "edition" onchange = "if(this.value != '') ajaxVerif('checkEdi', this.value, this.id);"> </p>
        <p> <input type = "submit"> </p>

        </fieldset>
    </form>
</body>
</html>

    function validate(thisForm)
    {
    if (thisForm.ISBN.value == '') {
                    alert('Please enter a valid ISBN number in the form XXXX-YYYY-ZZZZ');
                    this.ISBN.focus();
                    return false;
                }
    if (thisForm.title.value == '') {
                    alert('Please fill in the title field.');
                    this.title.focus();
                    return false;
                }   
    if (thisForm.author.value == '') {
                    alert('Please fill in the author field.');
                    this.author.focus();
                    return false;
                }
    if (thisForm.edition.value == '') {
                    alert('Please enter a valid edition number.');
                    this.edition.focus();
                    return false;
                }
    alert('Success! This test form is working! (TO BE DELETED!!)');
    return false;
    }

图书登记。
图书登记访问
国际书号:

标题:

作者:

版本:

函数验证(此表单) { 如果(thisForm.ISBN.value=''){ 警报('请以XXXX-YYYY-ZZZZ格式输入有效的ISBN号'); 这个.ISBN.focus(); 返回false; } 如果(thisForm.title.value==“”){ 警报('请填写标题字段'); this.title.focus(); 返回false; } if(thisForm.author.value==''){ 警报('请填写作者字段'); this.author.focus(); 返回false; } 如果(thisForm.edition.value==''){ 警报('请输入有效的版本号'); this.edition.focus(); 返回false; } 警报('成功!此测试表单正在工作!(待删除!!)); 返回false; }
编辑:为清洁度而编辑,仍然无法使其工作。因此,现在一切都在验证方面起作用,显然,除了返回的错误。它总是尝试跳转到下一页(并且失败,因为它链接到了一个虚拟页)。我不太清楚为什么,我很确定我所有的回报应该是好的


最终编辑:修复了,我忘记将其写为onsubmit='returnvalidate(this)>

首先,避免内联JavaScript

通过保持一个干净的JavaScript代码,您可能会注意到缺少的
}

  if (this.title.value == '') {
    alert('Please fill in the title field.');
    this.title.focus();
    return false;
  }
--^--

更新
  • 您忘记了返回的
    ,并且

    onsubmit = "return validate(this);"
             ---^^^^^^---         ---^---
    
  • 您还忘了将
    替换为
    此表单


  • 请不要像内联PHP那样内联JavaScript。这显然是错误的,也是令人痛苦的。我同意Alexender的观点,内联javascript让我感到畏缩。你在
    if(this.author.value=='')之前缺少了一个
    }
    {
    内联很抱歉,我没有,输入失败。不管怎样,我还没有写JS文件,所以我会修复它。只是想说声谢谢,你们是救命恩人,不敢相信我错过了。再次感谢,老兄,我真的很感激。你知道什么会导致以下情况吗:当我添加这一行时:在m的开头y JS文件,它会导致文件中包含的JS停止工作。有什么想法吗?我的主要目的是编写一个调用我的ajax访问我的XML@GregoryFischer-拉什,没有。没有上下文,没有人能回答这个问题。例如,你已经发生了语法错误。你可能想创建一个新问题