在html表单中使用javascript函数在php内部回显

时间:2013-06-05 19:34:38

标签: php javascript html forms function

原谅标题,这是我能想出来解决问题的最佳方式。

基本上,我在一些PHP代码中有一个html表单,但我需要在表单中包含javascript函数(带有指定的参数)。但我有一个问题,单引号和双引号标记escping 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()函数...

我该怎么办?

非常感谢

有人能帮助我吗?

4 个答案:

答案 0 :(得分: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();

答案 1 :(得分:4)

我会将javascript放在外部文件中,并让php将链接放到该文件中。

答案 2 :(得分: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">

答案 3 :(得分:0)

您可以通过在它们之前添加一个反斜杠来转义引号。