我无法验证下面的textarea,不知道我的代码有什么问题。
$echo .= ' <div id="chooseForm">
<input type="checkbox" name="ArticlesOrderForm" value="ArticlesOrderForm"> <b>Articles Order Form </b>
</div>';
$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 .= '<div id="ArticlesOrderForm" class="formGroup">
<legend>Articles Order Form</legend>
<b><label for="article_keywords">Keywords/Titles<span class="reqd">*</span> : </label></b> <textarea rows="6" cols="50" id="article_keywords" name="article_keywords" > </textarea>
</div>';
if($_POST['ArticlesOrderForm'] == 'checked') {
if(!isset($_POST['article_keywords']) || empty($_POST['article_keywords'])) {
$myerror= '<li>'.__('<strong>Keywords/Titles</strong> - missing.','article_keywords').'</li>';
}
}
如果有人不进入该文本区域,我应该收到一条消息'关键字/标题 - 缺失'..
有人可以告诉我的逻辑有什么不对吗?
答案 0 :(得分:3)
您正在测试错误的条件,而不是
if(!isset($_POST['article_keywords']) && !empty($_POST['article_keywords'])) {
尝试测试
if(!isset($_POST['article_keywords']) || empty($_POST['article_keywords'])) {
现在你正在测试它是否不为空,而你应该测试 是否空
答案 1 :(得分:1)
您正在检查$_POST['article_keywords']
是否未设置且不为空。那两个相互排斥。
您可以删除empty
或isset
检查以实现目标。 (或者只需将&&
替换为||
,然后移除!
前面的empty
答案 2 :(得分:1)
@Jim(或is it Bob?),
部分问题(以及其他人指出的逻辑错误)是因为浏览器不会在$_POST
或$_GET
中为<div>
元素返回值。< / p>
您的HTML有<div id="ArticlesOrderForm">
看起来您正在尝试查找是否已选中复选框。在这种情况下,您应该执行以下操作,假设您创建<input type="checkbox" id="ArticlesOrderForm">
,其中ArticlesOrderForm
在表单中是唯一的!
if(isset($_POST['ArticlesOrderForm'])){
}
<强>更新强>
查看your question from yesterday(并假设您没有更改代码)我可以看到您确实拥有<input type="checkbox" id="ArticlesOrderForm">
以及<div id="ArticlesOrderForm">
。
这是无效的HTML ,因为页面上的所有id
属性必须是唯一的 - 您不能拥有相同的id
属性一个元素。
我仍然认为,如果选中该复选框仍然是...
if(isset($_POST['ArticlesOrderForm'])){
}
...因为$_POST(['ArticlesOrderForm'])
中包含的值不会设置为checked
。复选框只会发送一个值(如果已经选中),如果尚未检查,则它不会发回一个值,因此不会设置$_POST(['ArticlesOrderForm'])
。
但是必须从id="ArticlesOrderForm"
中删除<div>
(或称之为其他内容)以获得有效的HTML。
答案 3 :(得分:1)
您尚未提供整份表格,因此这可能是您的第一个问题,也可能不是。 你的第一个if语句是检查一个似乎不存在的$ _POST变量。
if($_POST['ArticlesOrderForm'] == 'checked')
您的表单中有一个ID为'ArticlesOrderForm'的DIV但没有表单输入,所以它不会包含在$ _POST中。 $ _POST是一个通过POST从表单提交的值数组,它不包括表单中仅输入表单的全部内容。所以第一个陈述总是错误的。
要纠正这个问题,你需要一个有效的输入,其ID /名称为“ArticlesOrderForm”,值为“checked”,按照我假设你想要一个复选框的名称。
<input type="checkbox" name="ArticlesOrderForm" value="checked" />
请注意,ids必须是唯一的,因此您不能有两个具有相同值的ID,这就是我在我的示例中使用name属性的原因,它将在$ _POST中显示为'ArticlesOrderForm',但不会发生冲突使用id为'ArticlesOrderForm'的div。
在该问题之后,您需要检查此问题的其他答案中提到的其他声明。
<强>更新强>
看了一下你对另一个用户的另一个问题: Getting syntax error using jQuery
我看不到任何表单标签,jQuery似乎没有尝试提交数据。您应该将表单包装在<form>
标记中。类似的东西:
<form method="post" action="you_page.php">
<!-- form fields / inputs -->
</form>
如果是这种情况,你真的需要在开始使用javascript / php之前刷新你的html!看看这个可以帮助您入门:HTML Forms。