2012-05-14 3 views
0

Я искал всюду для ответа на это, и я действительно не могу понять, что я делаю неправильно. Я понимаю, что это, наверное, глупая ошибка, но я просто ломаю себе голову над этим.Почему моя валидация формы не работает?

У меня есть сценарий, который отправляется в файл PHP. Сценарий при отправке должен проверяться, чтобы убедиться, что заполненные поля заполнены, а если нет, он должен открыть окно Javascript, чтобы в основном сказать им, что они не заполнили правильные поля. К сожалению, на минуту он просто отправляет.

Код выглядит следующим образом:

<div id="formcontainer"> 
<div class="formcontent"> 
<h3>Fields marked (*) are required</h3>The amount of money that Affecting Real Change is able to raise is dependent on the generosity of donors and our volunteer's fantastic fundraising. All of the money raised goes towards project building materials. Without these funds we really wouldn't be able to do what we do. 
</div> 
    <form method=post enctype=multipart/form-data action=formurl.php onSubmit="return validatePage1();"> 

    <h3>Full Name (Insert as it appears on your passport)&nbsp;*</h3><p class="formfield"><input class=mainForm type=text name=field_1 id=field_1 size='40' value=''></p> 

<h3>Your gender&nbsp;*</h3><select class=mainForm name=field_7 id=field_7><option value=''></option><option value="Male">Male</option><option value="Female">Female</option></select> 

<h3>Email Address&nbsp;*</h3><p class="formfield"><input class=mainForm type=email name=field_2 id=field_2 size=40 value=""></p> 

    <h3>Phone Number&nbsp;*</h3><p class="formfield"><input class=mainForm type=text name=field_11 id=field_11 size='40' value=''></p> 

    <h3>Indicate Trip & Date&nbsp;*</h3><p class="formfield"><input class=mainForm type=text name=field_3 id=field_3 size='40' value=''></p> 

<h3>Please type any more info here&nbsp;*</h3><textarea class=message name=field_5 id=field_5 rows=7 cols=40></textarea> 

<h3>I have read your <a href="http://www.affectingrealchange.org/terms-and-conditions/" target="_blank">Terms and Conditions</a> and agree&nbsp;*</h3><select class=mainForm name=field_10 id=field_10><option value=''></option><option value="Yes">Yes</option><option value="No">No</option></select> 

     <!-- end of this page --> 

     <!-- page validation --> 
     <SCRIPT type=text/javascript> 

      function validatePage1() 
      { 
       retVal = true; 
       if (validateField('field_1','fieldBox_1','text',1) == false) 
retVal=false; 
if (validateField('field_2','fieldBox_2','email',1) == false) 
retVal=false; 
if (validateField('field_3','fieldBox_3','textarea',1) == false) 
retVal=false; 
if (validateField('field_5','fieldBox_5','textarea',1) == false) 
retVal=false; 
if (validateField('field_7','fieldBox_7','menu',1) == false) 
retVal=false; 
if (validateField('field_10','fieldBox_10','menu',1) == false) 
retVal=false; 
if (validateField('field_11','fieldBox_10','menu',1) == false) 
retVal=false; 

       if(retVal == false) 
       { 
        alert('Please correct the errors. Fields marked with an asterisk (*) are required'); 
        return false; 
       } 
       return retVal; 
      } 

     </SCRIPT> 

     <!-- end page validaton --> 



     <li class="mainForm"> 
         <br/><p class="submit"><input id="saveForm" class="submit" type="submit" value="Submit" /></p> 
       </li> 

      </form> 

Я понимаю, что это, вероятно, что-то действительно глупо, но я не могу за жизнь мне понять, что это такое.

Действительно, форма просто необходима для проверки одного поля. Сайт, на котором он используется, получает много пустых страниц, поэтому просто проверка одного поля будет абсолютно прекрасной.

Любая помощь будет фантастической!

Благодаря Льюис

+0

Что такое 'validateField()' функция? Похоже, что ваши операторы 'if' никогда не оценивают' true' и поэтому никогда не устанавливают 'retVal = false'. Кроме того, я бы предложил иметь некоторую проверку на стороне сервера для предотвращения отправки пустых страниц. – billyonecan

ответ

1

на своих входах можно добавить требуется, то есть:

<input type="text" name="Pname" maxlength="50" value="" required aria-required=true />

0

Вы включая ссылку на "validateField" где-нибудь?

0

Можете ли вы показать нам свою функцию validateField? Я думаю, что, вероятно, эта функция не работает.

Кстати, я думаю, что это не очень хорошо, чтобы положить JS в HTML, как это, вы должны создать файл, включить так:

<script src="js/validation.js"></script> 

И я думаю, вы могли бы сделать что-то еще глобальный, используя данные в вашем HTML. Делая это, у вас может быть только один JS-код для всех форм.

0

Если вызов validateField вызывает исключение, он обходит возврат в конце validatePage1. Попробуйте вмещающих тесты в Try/поймать блок, чтобы увидеть, что происходит, как

function validatePage1() 
{ 
    retVal = true; 
    try { 
    if (validateField('field_1','fieldBox_1','text',1) == false) 
     retVal=false; 
    ... 
    if (validateField('field_11','fieldBox_10','menu',1) == false) 
    retVal=false; 
    } catch (e) { alert(e); } 

    if(retVal == false) 
    { 
     alert('Please correct the errors. Fields marked with an asterisk (*) are required'); 
    } 
    return retVal; 
} 

Вы уверены, что не опечатка - все ли поля вы проверяете фактически определены на странице?

Смежные вопросы