// 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/
Вы смешиваете серверный код и клиентский код.
PHP используется на сервере и будет выводить HTML-код, который отправляется в браузер (HTML может включать jQuery). Но jquery будет работать только в браузере.
Проблема в том, что вы используете команды jquery на стороне сервера , со следующей строкой …
(Это утверждение 2-го if
в вашей функции eshop_extras_errorcheckout
)
if($('#check_id').is(":checked"))
Это должен быть PHP-код, а не jquery … что-то вроде …
if(isset($_POST('check_id'))){ // Do something }
Дополнительно на основе комментария OP
Причина, по которой ваши флажки не остаются «проверенными» на обратной стороне страницы, заключается в том, что каждый раз вы создаете код <input type="checkbox"
, и если вы специально не checked
атрибут checked
, это будет не отображаться, когда страница отображается.
(Я не уверен, что вы знакомы с ASP.NET, но в этой технологии, если вы отметите галочку, а затем после обратной связи, ASP.NET справится с этим для вас. PHP не делает это стандартным, вам нужно чтобы сказать это, чтобы проверить это.)
Так, например, где вы «эхо» используете следующую строку в вашей функции eshop_extras_checkout
(обратите внимание, что это содержится в строке PHP, это не прямая eshop_extras_checkout
):
<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
, если флажок установлен, и он не будет, если он не будет.
Надеюсь, что имеет смысл