te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - Uncaught ReferenceError: form is not defined - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Uncaught ReferenceError: form is not defined - Stack Overflow

programmeradmin3浏览0评论

Can't for the life of me figure this out. any help would be greatly appreciated!

This is the message I receive in Google Chrome when I test the script:

Navigated to http://localhost/contact.php form2.js:2 Uncaught ReferenceError: form is not definedform2.js:2 validatecontact.php:24 onsubmit Navigated to http://localhost/contact.php

My contact.php file:

<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="form2.js"></script>



<?php require 'Includes/Header.php'; ?>

    <div class="wrapper">
        <div id="contact-form">
        <h5>Contact Form</h5>
    <form name="contact" form method="post" action="contact.php" 
    onsubmit="return validate(contact)">

        <label for="name">Name:</label>
        <input type="text" id="name" name="name">

        <label for="email">Email:</label>
        <input type="email" id="email" name="email">

        <label for="message">Message:</label>
        <textarea id="message" name="message"></textarea>


        <button type="submit">Submit</button>
        </form>         
            <div class="clear"></div>
    </div>
    </div>


   <?php require 'Includes/Footer.php'; ?>

My form2.js file:

    function validate(contact){
    var name = form.name.value;
    var email = form.email.value;
    var message = form.message.value;

    if (name.length == 0 || name.length > 200)
    {alert ("You must enter a name.");
    return false;
    }

    if (email.length == 0 || email.length > 200)
    {alert ("You must enter a email.");
    return false;
    }

    if (message.length == 0)
    {alert ("You must enter a message.");
    return false;
    }

    return true;
}

Can't for the life of me figure this out. any help would be greatly appreciated!

This is the message I receive in Google Chrome when I test the script:

Navigated to http://localhost/contact.php form2.js:2 Uncaught ReferenceError: form is not definedform2.js:2 validatecontact.php:24 onsubmit Navigated to http://localhost/contact.php

My contact.php file:

<link rel="stylesheet" type="text/css" href="style.css" />
<script type="text/javascript" src="form2.js"></script>



<?php require 'Includes/Header.php'; ?>

    <div class="wrapper">
        <div id="contact-form">
        <h5>Contact Form</h5>
    <form name="contact" form method="post" action="contact.php" 
    onsubmit="return validate(contact)">

        <label for="name">Name:</label>
        <input type="text" id="name" name="name">

        <label for="email">Email:</label>
        <input type="email" id="email" name="email">

        <label for="message">Message:</label>
        <textarea id="message" name="message"></textarea>


        <button type="submit">Submit</button>
        </form>         
            <div class="clear"></div>
    </div>
    </div>


   <?php require 'Includes/Footer.php'; ?>

My form2.js file:

    function validate(contact){
    var name = form.name.value;
    var email = form.email.value;
    var message = form.message.value;

    if (name.length == 0 || name.length > 200)
    {alert ("You must enter a name.");
    return false;
    }

    if (email.length == 0 || email.length > 200)
    {alert ("You must enter a email.");
    return false;
    }

    if (message.length == 0)
    {alert ("You must enter a message.");
    return false;
    }

    return true;
}
Share Improve this question asked Feb 6, 2015 at 18:47 FaithRFaithR 651 gold badge1 silver badge3 bronze badges 2
  • 2 Why do you expect form to exist? – SLaks Commented Feb 6, 2015 at 18:49
  • You have a form attribute in the form tag...? – Musa Commented Feb 6, 2015 at 18:50
Add a ment  | 

4 Answers 4

Reset to default 6

form is a javascript object. That object does not exist within this file, which is why the error is being thrown. If you want to validate this form, you need to get a reference to it from the DOM first, using document.contact.

function validate(contact){
  var form = document.contact,
      name = form.name.value,
      email = form.email.value,
      message = form.message.value;

  if (name.length == 0 || name.length > 200) {
    alert ("You must enter a name.");
    return false;
  }

  if (email.length == 0 || email.length > 200) {
    alert ("You must enter a email.");
    return false;
  }

  if (message.length == 0) {
    alert ("You must enter a message.");
    return false;
  }

  return true;
}

try using jquery by adding

<script type="text/javascript" charset="utf-8"  src="./jquery-1.9.1.js" />

to the header (you will have to download it or then add:

<script src="http://code.jquery./jquery-latest.min.js" type="text/javascript"></script>

to get the latest) then in your function get the values of the input fieds as follow:

var name = $('#name').value;
var email = $('#email').value;
var message = $('#message').value;

Access forms like this

<form action="#" name="test_form">
    <input name="firstname" value="hello world"/>
  </form>

var valueOfInput = document.test_form.firstname.value

you can also go like documents.forms["test_form"].elements

so maybe passing in document.contact can help ...

otherwise look at libraries like jQuery which give you a nice api to access DOM elements.

The error is what it says. You don't have a form variable defined (From what you've shared).

Also, it looks like you're trying to validate your form by accessing the values of the input fields. Here is how you should / could do it -

function validate(contact){
   var name = document.getElementsByName('name')[0].value;
   // You can also do the following
   // var name = document.getElementById('name').value;
   // var name = document.forms['contact'].elements['name'].value;

   var email = document.getElementsByName('email')[0].value;
   var message = document.getElementsByName('message')[0].value;

   if (name.length == 0 || name.length > 200)
   {
     alert ("You must enter a name.");
     return false;
   }

   if (email.length == 0 || email.length > 200)
   {  
      alert ("You must enter a email.");
      return false;
   }

  if (message.length == 0)
  {  
    alert ("You must enter a message.");
    return false;
  }

  return true;
}
发布评论

评论列表(0)

  1. 暂无评论