Javascript не срабатывает, когда предполагается - PullRequest
0 голосов
/ 15 июля 2011

Почему Javascript isValidEmailAndEqual не срабатывает при отправке формы:

echo("<script language='javascript' type='text/javascript'>
<!--

function isValidEmailAndEqual() {
regExp = /^[^@]+@[^@]+$/;


if((document.subscribe.email1.value.search(regExp) == -1) || !isEqual(document.subscribe.email1.value, document.subscribe.email2.value)) 
   { 
   //alert(isEqual(document.subscribe.email1.value, document.subscribe.email2.value))
       alert('Incorrect entered email addresses. They must be valid e-mail addresses and equal.');
      return false; 
   } 

   //document.subscribeForm.submit();

return true; 
}


-->
</script>");

echo ("<div class='subscribe'>
     <h4>Subscribe</h4>
     <p>Subscribe to iAndApp's newsletter in order to get information about new and updated iPhone games and iPhone applications, that has been released by iAndApp. </p>
     <form action='subscription.php' name='subscribe' method='post'  onsubmit='return isValidEmailAndEqual()'>
        <p class='formlabel'>Förnamn</p> <input type='text' name='first_name'/><br/>
        <p class='formlabel'>Efternamn</p> <input type='text' name='surname'/> <br/>
        <p class='formlabel'>E-mail</p> <input type='text' name='email1'/><br/>
        <p class='formlabel'>Repeat e-mail</p> <input type='text' name='email2'/> <br/>
        <input class='inputsubmit' type='submit' value='Subscribe'/>
     </form>
</div>");

Firebug говорит мне, что на странице нет javascript.

Я пробовал как с комментариями, так и без них, и добавил префикс закрывающего комментария.

То, что я делаю, может иметь значение, загружая приведенное ниже содержимое с сервера, а затем добавляя его в тег div. Содержимое представлено, но сценарии не работают. Я также попытался включить сценарии на главной / родительской странице (страница, загружающая контент и добавляющая его в div), где у меня есть другие работающие сценарии (которые запускаются компонентом на главной / родительской странице).

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Это должно быть
echo("<script language='javascript' type='text/javascript'><br> <!--<br> //your code here, obviously not commented<br> //--><br> </script>

К вашему сведению, http://www.w3.org/TR/html4/interact/scripts.html#h-18.3.2

0 голосов
/ 15 июля 2011

На самом деле, они срабатывают.Следующий HTML-код (в точности такой, какой выводит ваш скрипт) заставляет функцию запускаться как в Firefox 5, так и в Chrome.Как заметка, вам, вероятно, не нужны html-комментарии (<!-- и -->).Это практика, которая, как правило, больше не нужна, поскольку браузеры, которые не поддерживают javascript, просто игнорируют все внутри тегов.

При этом, если вам нужны html-комментарии, закомментируйте -->, чтобы избежать его запускаошибка JS (как объясняет Кумар).

<script language='javascript' type='text/javascript'> 
<!--

function isValidEmailAndEqual() {
regExp = /^[^@]+@[^@]+$/;


if((document.subscribe.email1.value.search(regExp) == -1) || !isEqual(document.subscribe.email1.value, document.subscribe.email2.value)) 
   { 
   //alert(isEqual(document.subscribe.email1.value, document.subscribe.email2.value))
       alert('Incorrect entered email addresses. They must be valid e-mail addresses and equal.');
      return false; 
   } 

   //document.subscribeForm.submit();

return true; 
}


-->
</script><div class='subscribe'> 
     <h4>Subscribe</h4> 
     <p>Subscribe to iAndApp's newsletter in order to get information about new and updated iPhone games and iPhone applications, that has been released by iAndApp. </p> 
     <form action='subscription.php' name='subscribe' method='post'  onsubmit='return isValidEmailAndEqual()'> 
        <p class='formlabel'>Förnamn</p> <input type='text' name='first_name'/><br/> 
        <p class='formlabel'>Efternamn</p> <input type='text' name='surname'/> <br/> 
        <p class='formlabel'>E-mail</p> <input type='text' name='email1'/><br/> 
        <p class='formlabel'>Repeat e-mail</p> <input type='text' name='email2'/> <br/> 
        <input class='inputsubmit' type='submit' value='Subscribe'/> 
     </form> 
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...