-1

下面是我的一个 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

4

5 回答 5

2

在这一行

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

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

于 2012-10-19T21:43:44.823 回答
1

您需要转义 ' (撇号)

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

因为它打破了你的第一个回声语句

于 2012-10-19T21:43:25.543 回答
1

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

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

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

是否有理由必须通过连接来构建此字符串?实际上,您似乎根本没有在 PHP 中执行任何操作。您应该以相反的方式执行此操作,并保留所有这些标记,但将任何实际的 PHP 代码散布在<? ... ?>.

于 2012-10-19T21:49:18.570 回答
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;
}
    ?>

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

于 2012-10-19T21:50:24.070 回答
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;
}
于 2012-10-19T21:56:39.750 回答