2013-06-05 44 views
0

原谅这个标题,这是我能想到的最好的方式来解决我的问题。在html里面使用javascript函数被回显在php里

基本上,我在一些php代码里面有一个html表单,但是我需要在窗体内部包含javascript函数(带有指定的参数)。但我有一个单引号和双引号的问题,其中包括php代码。见下文:

echo'<form id="create_booking_form" onsubmit="return false;"> 
        <div>Student Name: </div> 
        <input id="students_name" type="text" onfocus="emptyElement('status')" onkeyup="restrict('students_name')" maxlength="30"> 
        <div>Parents Name: </div> 
        <input id="parents_name" type="text" onfocus="emptyElement('status')" onkeyup="restrict('parents_name')" maxlength="30"> 
        <div>Parents Email Address: </div> 
        <input id="parents_email" type="text" onfocus="emptyElement('status')" onkeyup="restrict('parents_email')" maxlength="100"> 
        <div>Booking Time: </div> 
        <input id="booking_time" type="text" onfocus="emptyElement('status')" onkeyup="restrict('booking_time')" maxlength="8"> 
        <div>Comments/Questions: (max 255 characters)</div> 
        <input id="comments" type="text" onfocus="emptyElement('status')" onkeyup="restrict('comments')" maxlength="255"> 
        <div>Password: </div> 
        <input id="password" type="password" maxlength="16"> 
        <br /><br /> 
        <button id="createbookingbtn" onclick="createbooking()">Submit your booking</button> 
        <span id="status"></span> 
       </form> 
      </div> 
     </div>';?> 

我的问题是,例如:的onkeyup =“限制(‘students_name’)”

如果我使用单引号来指定“student_name”它逸出echo命令形成PHP代码。如果我使用双引号,它会转义restrict()函数...

我该怎么办?

非常感谢

有人能够帮助我在这里吗?

+0

只是单独形式和JS,并使用jQuery附加处理程序 – KyleK

回答

0

您可以通过添加在他们面前一个反斜杠逃脱你的报价..

4

我会将JavaScript放在一个外部文件中,并让php将该链接指向该文件。

5

如果字符串与'的创建,您可以逃脱它打印'字符:\',如果它与"创建的,那么你可以打印它,将其转义为\"

然而,在你的情况下,我也不会这样做。我刚刚结束PHP标签并再次启动:

?> 
<form id="create_booking_form" onsubmit="return false;"> 
      <div>Student Name: </div> 
      <input id="students_name" type="text" onfocus="emptyElement('status')" onkeyup="restrict('students_name')" maxlength="30"> 
      <div>Parents Name: </div> 
      <input id="parents_name" type="text" onfocus="emptyElement('status')" onkeyup="restrict('parents_name')" maxlength="30"> 
      <div>Parents Email Address: </div> 
      <input id="parents_email" type="text" onfocus="emptyElement('status')" onkeyup="restrict('parents_email')" maxlength="100"> 
      <div>Booking Time: </div> 
      <input id="booking_time" type="text" onfocus="emptyElement('status')" onkeyup="restrict('booking_time')" maxlength="8"> 
      <div>Comments/Questions: (max 255 characters)</div> 
      <input id="comments" type="text" onfocus="emptyElement('status')" onkeyup="restrict('comments')" maxlength="255"> 
      <div>Password: </div> 
      <input id="password" type="password" maxlength="16"> 
      <br /><br /> 
      <button id="createbookingbtn" onclick="createbooking()">Submit your booking</button> 
      <span id="status"></span> 
     </form> 
    </div> 
</div> 
<?php 

但是,当我想的HTML内容是在一个变量?

只需使用输出缓冲区即可。

ob_start(); 
?> 
    <p>Some HTML</p> 
<?php 
$html = ob_get_clean(); 
2

放一个\在引号前逃脱:

echo'<form id="create_booking_form" onsubmit="return false;"> 
        <div>Student Name: </div> 
        <input id="students_name" type="text" onfocus="emptyElement(\'status\')" onkeyup="restrict(\'students_name\')" maxlength="30">