-5
// Add an additional field to the checkout within a new fieldset
add_filter('eshopaddtocheckout','eshop_extras_checkout');

function eshop_extras_checkout($echo){

$echo .= '  <script>
        jQuery(function($) {
            $(".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 .= '<legend>Select the Approriate Form</legend>' . "\n";

    $echo .= ' <div id="chooseForm">
        <input type="checkbox" name="forms2[]" id="ArticlesOrderForm" value="ArticlesOrderForm"> <b>Articles Order Form </b><br>
        <input type="checkbox" name="forms2[]" id="PressReleasesForm"  value="PressReleasesForm"> <b> Press Releases Form </b><br>
    </div>

    <div id="ArticlesOrderForm" class="formGroup">
        <legend>Articles Order Form</legend>
        <label for="kwd1">Art-Keywords1</label><input class="short" type="text" name="kwd1" value="" id="kwd1" maxlength="20" size="20" > <br>

    </div>

    <div id="PressReleasesForm" class="formGroup">
        <legend>Press Releases Form</legend>
        <label for="kwd2">PRKeywords2</label><input class="short" type="text" name="kwd2" value="" id="kwd2" maxlength="20" size="20"> <br>
    </div>';


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

    $echo .= '<legend>Extras</legend>' . "\n";
    $echo .= '<label for="eshop_extra">'.__('Extra Field','eshop').' <span class="reqd">*</span><br />
          <input class="short" type="text" name="eshop_extra" value="" id="eshop_extra" maxlength="20" size="20" /></label><br />';
    $echo .= '</fieldset>' . "\n";

    return $echo;
}



  // Add extra field to error checks
    add_filter('eshoperrorcheckout','eshop_extras_errorcheckout');
    function eshop_extras_errorcheckout($_POST){
        $myerror='';

        if(!isset($_POST['eshop_extra']) || trim($_POST['eshop_extra'])==''){
        $myerror= '<li>'.__('<strong>Extra Field</strong> - missing.','eshop_extras').'</li>';
    }



    if(!isset($_POST['ArticlesOrderForm'])) {

      if(!isset($_POST['kwd1']) || trim($_POST['kwd1'])=='') {
        $myerror= '<li>'.__('<strong>KWD1</strong> - missing.','kwd1').'</li>';
        }
    }


    if(!isset($_POST['PressReleasesForm'])) {

      if(!isset($_POST['kwd2']) || trim($_POST['kwd2'])=='') {
        $myerror= '<li>'.__('<strong>KWD2</strong> - missing.','kwd2').'</li>';
        }
    }   


        return $myerror;
    }

** 現在、構文エラーが発生していません....以下のリンクを確認してください: (適切なフォームを選択してください) 、チェックすると、それらが失われています..何が間違っているのですか..? **

articlewritingservicess.com/shopping-cart/checkout/

4

1 に答える 1

5

サーバー側のコードとクライアント側のコードを混同しています。

PHP はサーバーで使用され、ブラウザーに送信される HTML を生成します (HTML には jquery を含めることができます)。ただし、jquery はブラウザーでのみ機能します。

問題は、サーバー側で次の行でjquery コマンドを使用していることです...
(これは関数の 2 番目のifステートメントeshop_extras_errorcheckoutです)

if($('#check_id').is(":checked"))

これは、jquery ではなく、PHP コードである必要があります...

if(isset($_POST('check_id'))){
  // Do something
}

OPのコメントに基づく追加

ページのポストバックでチェックボックスが「チェック」されたままにならない理由は、<input type="checkbox"毎回コードを作成しているためであり、特にchecked属性を指定しないと、ページが表示されたときにチェックが解除されます。

(あなたが ASP.NET に精通しているかどうかはわかりませんが、そのテクノロジでは、チェックボックスをオンにしてからポストバックすると、ASP.NET がこれを処理します。PHP は標準でそれを行いません。確認するように指示します。)

したがって、たとえば、eshop_extras_checkout関数で次の行を「エコー」している場合 (これは PHP 文字列に含まれていることに注意してください。これは単純なマークアップではありません)。

<input type="checkbox" name="forms2[]" id="ArticlesOrderForm"
  value="ArticlesOrderForm"> <b>Articles Order Form </b><br>

...条件付きで属性を配置する必要があります。次のcheckedようになります。

(isset($_POST('ArticlesOrderForm')) ? "Checked" : "")

...文字列は次のようになります

<input type="checkbox" name="forms2[]" id="ArticlesOrderForm" 
  value="ArticlesOrderForm" ' . (isset($_POST('ArticlesOrderForm')) ? "Checked" : "") . '> <b>Articles Order Form </b><br>

したがって、最終的な HTML がブラウザに送信されるとchecked、チェックボックスがオンになっている場合は属性が表示され、チェックされていない場合は表示されません。

それが理にかなっていることを願っています

于 2012-10-22T15:49:50.487 に答える