Как использовать cookie для обнаружения, если пользователь уже отправил форму? - PullRequest
2 голосов
/ 09 ноября 2010

Я не ищу кого-то, кто сделает мою работу за меня ... Мне нужна помощь / совет.

Мне нужно:

Изменить страницу формы так,когда функция JavaScript проверила, что все обязательные поля заполнены, на компьютер пользователя добавляется файл cookie.Если один и тот же пользователь попытается заполнить форму во второй раз, он будет перенаправлен на отдельную HTML-страницу, сообщающую ему, что он уже отправил форму.1009 *

Это моя форма:

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Request Form</title>


<meta name="Description" content="This webpage is for  Customer   Demographics" />
<meta name="Keywords" content="Rhonda , email, " />
<meta name="author" content="Rhonda " />
<meta name="copyright" content="Copyright 2010 Rhonda , All Rights Reserved"   />
<meta name="robots" content="all" />
<meta name="revisit-after" content="15 days" />
<meta name="rating" content="safe for kids" />

<script>

<!-- page to go to if cookie -->


go_to = "Submit.html";


num_days = -1;
function ged(noDays){
var today = new Date();
var expr = new Date(today.getTime() + noDays*24*60*60*1000);
return  expr.toGMTString();
}

function readCookie(cookieName){
var start = document.cookie.indexOf(cookieName);
if (start == -1){ 
    document.cookie = "seenit=yes; expires=" + ged(num_days);
} else {
    window.location = go_to;
}
}

readCookie("seenit");

</script>
<script type="text/javascript" >


function verify() {
var themessage = "You are required to complete the following fields: ";
if (document.form.first.value=="") {
themessage = themessage + " - First Name";
}
if (document.form.middle.value=="") {
themessage = themessage + " -  Middle Initial";
}
if (document.form.last.value=="") {
themessage = themessage + " -  Last Name";
}
if (document.form.street.value=="") {
themessage = themessage + " - Street";
}
if (document.form.city.value=="") {
themessage = themessage + " -  City";
}
if (document.form.state.value=="") {
themessage = themessage + " -  State";
}
if (document.form.zip.value=="") {
themessage = themessage + " -  Zip Code";
}
if (document.form.email.value=="") {
themessage = themessage + " -  E-mail";
}
if (document.form.areacode.value=="") {
themessage = themessage + " - Area Code";
}
if (document.form.telephone.value=="") {
themessage = themessage + " - Telephone";
}
if (themessage == "You are required to complete the following fields: ") {
document.form.submit();
}
else {
alert(themessage);
return false;
}
} 

</script>   
</head>



<body>
<body style="background-color:lightsteelblue">


<h1>
    Welcome  customer.
    <br />
    <br />
    <br /> 
Please enter the following details in order
to be added to our preferred customer mailing list:
    <br />
    <br />
    <br />
</h1>
<!--This code builds the form -->

<form  name=form method="post" action="">

<!--Personal information: -->
<form action="">
<fieldset>
<legend>Personal Information:</legend>      

<br /><br />
First Name:<input type=text name="first" size="20"> <br /><br /><br />
Middle Initial:<input type=text name="middle" size="3"><br /><br /><br />
Last Name:<input type=text name="last" size="20"> <br /><br />
<br />
</fieldset>
<br /><br />

<form action="">
<fieldset>
<legend>Address:</legend>
<!--Address:  -->
Street: <input type=text name="street" size="30"><br /><br />
City: <input type=text name="city" size="30"><br/><br />
State:<input type=text name="state" size="2"><br/><br />
Zip Code: <input type=text  name="zip" size="7"><br /><br />
<br />
</fieldset>

<br /><br />
<!--Contact Information: -->
<form action="">
<fieldset>
<legend>Contact Information:</legend>       

Email Address:<input type=text name="email"  size="25" />

<br /><br />


Area Code:<input type=text name="areacode"  size="3" /><br /><br /> 
Telephone Number:<input type=text name="telephone"  size="7" /> 
<br />
<br />
</fieldset>

<br /><br /><br />

<!--NOTES 
This part was not mandantory. I was just trying some of the extra ways of adding     input that the book discussed-->       

<form action="">
<fieldset>
<legend>Extra Credit:</legend>

<p> 
Gender:
<br />
<input type="radio" name="sex" value="male" /> Male<br />
    <input type="radio" name="sex" value="female" /> Female
</p>        


<p>
How did you hear about us?
<br />
<input type="checkbox" name="Friend" value="Friend" /> From a friend
<br />
<input type="checkbox" name="Advertisement" value="Advertisement" />    Store   Advertisement
<br />
<input type="checkbox" name="Online" value="Online" /> From Online
<br />
<input type="checkbox" name="Other" value="Other" /> Other
<br />
</p>



<p>     
How do you wish to be contacted?
<br />
<form action="">
<select name="contact">
<option value="telephone">Telephone</option>
<option value="E-mail">E-mail</option>
<option value="Snail-mail">Snail-mail</option>
</select>
<br />
<br />
</fieldset>
</p>    


</form> 
<form action=""  onSubmit="return verify()" method="post">
<input type="submit" name="submit" value="Submit"> 
<input type=reset value="Clear Form"><br>
</form>

<!--Back to top -->
<p><a href="#top">Back to Top</a></p> 
</body>
</html>

1 Ответ

2 голосов
/ 09 ноября 2010

Первое, что нужно отметить, это то, что вложенные теги <form> не являются допустимым HTML.Вам нужен только один тег формы, чтобы обернуть все, от чего вы хотите отправить до первой <input> до после кнопки отправки.Добавьте обработчик onSubmit к этому тегу формы.

Кроме того, ваш первый тег сценария:

A) Не имеет атрибута type="text/javascript" (который, я считаю, требуется, если выиспользуя XHTML.)
B) Использует комментарий HTML <!-- --> вместо комментария JavaScript // или /* */, что, вероятно, приводит к ошибке и уничтожает все, что происходит под ней.

Исправьте эти две вещи, и если это все еще не работает, вернитесь и отредактируйте вопрос, добавив дополнительную информацию об ошибках, которые вы видите, и о том, что вы пытались до сих пор исправить.: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...