// 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;
}
Run Code Online (Sandbox Code Playgroud)
// 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;
}
Run Code Online (Sandbox Code Playgroud)
**现在我没有得到任何语法错误....请检查以下链接:(在选择适当的表格下),当你检查它们时,它们会丢失......我做错了什么...?**
articlewritingservicess.com/shopping-cart/checkout/
您正在混合服务器端代码和客户端代码.
PHP在服务器上使用,并将生成发送到浏览器的HTML(该HTML可以包含jquery).但是jquery只能在浏览器上运行.
问题是您在服务器端使用jquery命令,使用以下行...
(这是if您eshop_extras_errorcheckout函数中的第二个语句)
if($('#check_id').is(":checked"))
Run Code Online (Sandbox Code Playgroud)
这应该是PHP代码,而不是jquery ......类似......
if(isset($_POST('check_id'))){
// Do something
}
Run Code Online (Sandbox Code Playgroud)
附加基于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>
Run Code Online (Sandbox Code Playgroud)
...你需要有条件地放置checked属性,如下所示:
(isset($_POST('ArticlesOrderForm')) ? "Checked" : "")
Run Code Online (Sandbox Code Playgroud)
...这会导致字符串看起来像
<input type="checkbox" name="forms2[]" id="ArticlesOrderForm"
value="ArticlesOrderForm" ' . (isset($_POST('ArticlesOrderForm')) ? "Checked" : "") . '> <b>Articles Order Form </b><br>
Run Code Online (Sandbox Code Playgroud)
因此,当最终HTML发送到浏览器时,checked如果选中了复选框,则会显示该属性,如果不选中,则不会显示该属性.
希望有道理