2012-04-11 3 views
4

У меня есть HTML-форма, запрашивающая ввод пользователя. Функция javascript предназначена для проверки формы и должна запускаться (используя onsubmit) ПЕРЕД выполнением кода PHP. (Файл js ссылается в заголовке <script type="text/javascript" src="js/javascript.js"></script>)PHP и HTML-форма с javascript onsubmit не выполняется

ОДНАКО javascript никогда не выполняется, а вместо этого PHP-код выполняет и (правильно) включает в себя новый файл.

Как я могу выполнить выполнение javascript по мере необходимости?

HTML файл:

<form name="details" action="" method="post" 
    onSubmit="return ValidateForm(details);"> 
... 
<input type="submit" name="post-this-form" value="Next"/> 
</form> 

PHP файл:

if (isset($_POST['post-this-form']) and 
    $_POST['post-this-form'] == 'Next') 
{ 
... 
some php 
... 
include 'shipping-details.html.php'; 
exit(); 
} 

EDIT

вот Javascript в соответствии с просьбой. Он был протестирован и работал без участия какого-либо PHP. Пройдя details (имя формы), я делаю все поля формы доступными.

function ValidateForm(details) 
     { 
     var firstName=document.forms.details.firstName.value; 
     var lastName=document.forms.details.lastName.value; 
     var streetAddress=document.forms.details.streetAddress.value; 
     var town=document.forms.details.town.value; 
     var city=document.forms.details.city.value; 
     var zip=document.forms.details.zip.value; 
     var country=document.forms.details.country.value;  
     var creditCard=document.forms.details.creditcard.value;     

       ... 

     //Checks firstName 
     if ((firstName=="")||(!firstName.match(alphabetExpression))) 
      { 
      alert ("Invalid first name, please re-enter"); 
      return false; 
      } 
       ... 

     //Checks creditCard 
     if ((creditCard=="")||(!creditCard.match(numericExpression))||(creditCardLength!=16)) 
      { 
      alert ("Invalid credit card entry, please re-enter"); 
      return false; 
      }  
     }// end function 

EDIT 2

я добавил alert ("Hi"); в начале JavaScript и оповещения никогда не появляется, что приводит меня к мысли о том, что функция не выполняется вообще.

EDIT 3

Мои первоначальные подозрения, что эта проблема может быть связана с PHP был неправ. Как упоминал Джейсон в своих комментариях, проблема была в самом javascript. Это немного странно, потому что один и тот же код javascript работал «самостоятельно» без PHP и на моей локальной машине. Так много факторов, чтобы рассмотреть ... спасибо Все за то, что нашли время, чтобы посмотреть на мою проблему!

+2

Не могли бы вы разместить свой javascript-код? – chapkom

+0

попробуйте написать 'onSubmit =" return ValidateForm (this); "' вместо 'onSubmit =" return ValidateForm (details); "' –

+2

Что именно вы намерены передать своей функции Javascript? Потому что прямо сейчас вы говорите, что ваша передача переменной называется деталями, а не строкой «подробности» переменной, которую я предполагаю, это то, что вы намеревались. – Ally

ответ

1

Комментарий конвертированы ответить

"Держу пари, есть Javascript ошибка. Ошибка открытия консоли. Ctrl + Shift + J в Firefox."

Рад, что помогло.

2

Вот несколько вещей, которые вы должны знать о функциях, которые вы пытаетесь построить

function ValidateForm() { 
    this; // this contains the form name no need for any variable declaration 

    return true; // or false This is very important to continue the execution 
        // false stops the submittion 
} 

Когда вы исправить обе эти проблемы, он должен работать, как вы хотите.

+0

, это на самом деле не отвечает на вопрос ... – orourkek

+0

@orourkek, извините, вы так думаете. – Starx

+0

он действительно отвечает на свой вопрос, но до вашего редактирования вы даже не объяснили, что он должен был сделать ... По комментариям к OP вы можете видеть, что я согласен с вами в решении, но не было никакого ответ на его вопрос здесь, в то время – orourkek