我的代码中的逻辑错误

时间:2012-10-23 12:48:10

标签: php jquery html

我无法验证下面的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>';
    }   
}

如果有人不进入该文本区域,我应该收到一条消息'关键字/标题 - 缺失'..

有人可以告诉我的逻辑有什么不对吗?

4 个答案:

答案 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']是否未设置且不为空。那两个相互排斥。

您可以删除emptyisset检查以实现目标。 (或者只需将&&替换为||,然后移除!前面的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