2013-09-23 2 views
1

Я начинающий программист PHP, и мне было интересно, что случилось с моим кодом.PHP-текст, изменяющий эхо?

Вот небольшой отрывок из пораженного места:

echo "<form action='?tab=4' name='toedit5' method='get'><input value='text' onblur='edit('toedit5')' /></form>"; 

В Chrome Developer Tools, тем form элемент исчезает полностью, а становится edit('toedit5')edit(' toedit5').

Функция edit() не выполняется.

Есть ли что-то не так с этой строкой кода? В противном случае с ним будет нарушаться код. Извините, я не включил его, но я не знаю, что включить. Если вам нужна дополнительная информация, сообщите мне.

Спасибо.

+5

Похож на искаженный элемент. Вам нужно избегать ваших котировок. – Daedalus

+0

Это простая проблема 'HTML' (&' javascript'), не имеющая ничего общего с PHP. Выполните простую проверку HTML на нем ... – Wrikken

+0

Oh. Благодарю. Но я исправил это, и это закончилось тем, что не отразилось на элементе формы. –

ответ

5

Вам нужно бежать ваши котировки внутри ваш цитируемый echo'd заявление, как это:

<?php 
    echo "<form action='?tab=4' name='toedit5' method='get'>"; 
    echo "<input value='text' onblur='edit(\"toedit5\")' />"; // escaped..! 
    echo "</form>"; 
?> 

Это помогло мне думать об этом, как это, когда я начинал: как ваш браузер знать если вторая одинарная кавычка в onblur='edit('toedit5')' закрывает ваш оператор onblur или открывает параметр? В этом примере ваш браузер соединит первые 2 кавычки, которые он видит, и назначит это атрибуту onblur, то есть: onblur='edit('!

Update 1:

Используя код выше, я осмотрел быстро PHP страницу я создал инструменты разработчика Chrome и был в состоянии увидеть следующее (форма доступна для проверки):

Screen shot of developer tools

+0

Как я уже упоминал выше, элемент формы по-прежнему не печатает по неизвестной причине. –

+0

Эй @ Джон, см. Мой обновленный ответ, надеюсь, что это поможет! –

4

Вы действительно должны использовать более стандартные двойные кавычки вокруг свойств HTML и использовать одинарные кавычки вокруг своей строки с экранированными одинарными кавычками в вызовах метода javascript. Пример:

echo '<form action="?tab=4" name="toedit5" method="get"><input value="text" onblur="edit(\'toedit5\')" /></form>'; 
Смежные вопросы