【问题标题】:Using javascript function inside html form being echoed inside php在 php 中回显的 html 表单中使用 javascript 函数
【发布时间】:2013-06-05 19:34:37
【问题描述】:

原谅标题,这是我能想到的最好的表达我的问题的方式。

基本上,我在一些 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="restrict('students_name')"

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

我能做什么?

非常感谢

有人可以帮我吗?

【问题讨论】:

  • 把form和js分开,用jquery附加handlers

标签: php javascript html forms function


【解决方案1】:

如果你的字符串是用''s 创建的,你可以通过转义它来打印' 字符:\',如果它是用"'s 创建的,那么你可以通过转义它来打印它到\"

但是,在您的情况下,我也不会这样做。我只是结束 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】:

    我会将 javascript 放在一个外部文件中,然后让 php 放置指向该文件的链接。

    【讨论】:

      【解决方案3】:

      在引号前加一个\来转义:

      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">
      

      【讨论】:

        【解决方案4】:

        您可以通过在引号前添加一个反斜杠来转义引号..

        【讨论】:

          猜你喜欢
          • 2011-10-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-20
          • 1970-01-01
          • 2012-11-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多