PHP函数代码错误

时间:2012-10-19 21:40:25

标签: php jquery html

以下是我的一个php文件中的代码。它似乎有编译错误。我是php的新手。

任何人都可以在php功能代码中告诉我下面的错误:

function eshop_extras_checkout($echo){


    $echo .= '<script>

    $(".formGroup").hide();
$('#chooseForm input:checkbox').on('change', function() {
    if($(this).is(':checked')) {
        $("#" + $(this).val()).show();
    }
    else {
        $("#" + $(this).val()).hide();
    }   
});
​   
    </script>';

    $echo .= '<fieldset class="eshop eshop_extra">' . "\n";


     $echo .= ' <form id="chooseForm">
    <input type="checkbox" name="form1" value="form1"> Form1<br>
    <input type="checkbox" name="form1" value="form2"> Form2<br>
</form>

<form id="form1" class="formGroup">
    <h2>FORM 1</h2>
    <label>Name</label><input type="text"> <br>
    <label>Address</label><input type="text">
</form>

<form id="form2" class="formGroup">
    <h2>FORM 2</h2>
    <label>Username</label><input type="text"> <br>
</form>';


    $echo .= '<legend>Articles Order Form</legend>' . "\n";



    return $echo;


}

这是我浏览器中的错误:

  

解析错误:语法错误,第43行/home/harris12/public_html/somedomain.com/wp-content/plugins/eshop-extras/eshop-extras.php中的意外T_IF

5 个答案:

答案 0 :(得分:2)

在这一行

$('#chooseForm input:checkbox').on('change', function() {

你的代码中有'字符,因此结束了echo-command。这就是为什么它的解释和PHP代码显然会导致错误。尝试使用\'

转义它

答案 1 :(得分:1)

你需要逃避&#39; (撇号)

$('#chooseForm input:checkbox').on('change', function() {

因为它打破了你的第一个回声陈述

答案 2 :(得分:1)

您要连接到$echo的第一个字符串在单引号内有单引号。

if($(this).is(':checked'))

尝试将它们更改为双引号。

您是否有必要通过连接构建此字符串?实际上,您根本不会在PHP中执行任何操作。你应该以相反的方式做到这一点,并将所有这些标记保持原样,但用<? ... ?>散布任何实际的PHP代码。

答案 3 :(得分:1)

试试这样:

 <?php
function eshop_extras_checkout($echo){


    $echo .= '<script>

    $(".formGroup").hide();
    $("#chooseForm input:checkbox").on("change", function() {
        if($(this).is(":checked")) {
            $("#" + $(this).val()).show();
        }
        else {
            $("#" + $(this).val()).hide();
        }
    });
    ​
</script>';

    $echo .= '<fieldset class="eshop eshop_extra">' . "\n";


    $echo .= ' <form id="chooseForm">
        <input type="checkbox" name="form1" value="form1"> Form1<br>
        <input type="checkbox" name="form1" value="form2"> Form2<br>
    </form>

    <form id="form1" class="formGroup">
        <h2>FORM 1</h2>
        <label>Name</label><input type="text"> <br>
        <label>Address</label><input type="text">
    </form>

    <form id="form2" class="formGroup">
        <h2>FORM 2</h2>
        <label>Username</label><input type="text"> <br>
    </form>';


    $echo .= '<legend>Articles Order Form</legend>' . "\n";



    return $echo;
}
    ?>

您应该转义撇号或使用双引号。

答案 4 :(得分:0)

这是使用HEREDOC的重写:

function eshop_extras_checkout($output){
  $output .= <<<ESHOP_SCRIPT
<script>
   $(".formGroup").hide();
  $('#chooseForm input:checkbox').on('change', function() {
  if($(this).is(':checked')) {
    $("#" + $(this).val()).show();
  }
  else {
     $("#" + $(this).val()).hide();
  }   
  });
</script>
<fieldset class="eshop eshop_extra">
 <form id="chooseForm">
  <input type="checkbox" name="form1" value="form1" /> Form1<br />
  <input type="checkbox" name="form1" value="form2" /> Form2<br />
 </form>
 <form id="form1" class="formGroup">
  <h2>FORM 1</h2>
  <label>Name</label><input type="text" /> <br>
  <label>Address</label><input type="text" />
 </form>
 <form id="form2" class="formGroup">
  <h2>FORM 2</h2>
  <label>Username</label><input type="text" /> <br>
 </form>
 <legend>Articles Order Form</legend>
 ESHOP_SCRIPT;
 return $output;
}