0

以下のテキストエリアを検証できません。コードの何が問題なのかわかりません。

 $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

4 に答える 4

3

持っているのではなく、間違った条件をテストしています

if(!isset($_POST['article_keywords']) && !empty($_POST['article_keywords'])) {

テストしてみる

if(!isset($_POST['article_keywords']) || empty($_POST['article_keywords'])) {

空でないかどうかをテストしています、空かどうかをテストする必要があります

于 2012-10-23T12:51:00.803 に答える
1

@ジム(またはそれはボブですか?)、

問題の一部(および他の人が指摘している論理エラー)は、ブラウザーが$_POSTまたは要素の値を返さない$_GETためです。<div>

あなたのHTMLには<div id="ArticlesOrderForm">

チェックボックスが選択されているかどうかを確認しようとしているようです。その場合、フォーム内で一意のwhereを作成すると仮定して、次のことを行う必要があります。<input type="checkbox" id="ArticlesOrderForm">ArticlesOrderForm

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

アップデート

昨日からのあなたの質問を見ると(そしてあなたがあなたのコードを変更していないと仮定して)私はあなたが<input type="checkbox" id="ArticlesOrderForm">同様にを持っているのを見ることができます<div id="ArticlesOrderForm">

ページ上のすべての属性は一意である必要があるため、これは無効なHTMLです。複数の要素に同じ属性を設定することはできません。idid

チェックボックスが選択されているかどうかをテストするために、私はまだそれを保持しています...

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

...に含まれる値$_POST(['ArticlesOrderForm'])はに設定されないcheckedため。チェックボックスは、チェックされている場合にのみ値を送り返します。チェックされていない場合、値は返されません。したがって、$_POST(['ArticlesOrderForm'])設定されません。

ただし、有効なHTMLを使用するには、を(または別の名前で)削除する必要があります。id="ArticlesOrderForm"<div>

于 2012-10-23T12:54:35.100 に答える
1

フォーム全体を提供していないため、これが最初の問題である場合とそうでない場合があります。最初のifステートメントは、存在しないように見える$_POST変数かどうかをチェックしています。

if($_POST['ArticlesOrderForm'] == 'checked')

IDが「ArticlesOrderForm」のフォームにDIVがありますが、フォームが入力されていないため、$_POSTには含まれません。$ _POSTは、フォームからPOSTを介して送信された値の配列であり、フォームの内容全体は含まれず、フォーム内の入力のみが含まれます。したがって、最初のステートメントは常にfalseになります。

これを修正するには、ID /名前が「ArticlesOrderForm」で値が「checked」の有効な入力が必要です。たとえば、チェックボックスが必要だと思います。

<input type="checkbox" name="ArticlesOrderForm" value="checked" />

IDは一意である必要があるため、同じ値を持つ2つのIDを使用できないことに注意してください。そのため、この例ではname属性を使用しました。これは、$ _ POSTに「ArticlesOrderForm」として表示されますが、divと競合しません。 IDは「ArticlesOrderForm」です。

その問題の後、この質問に対する他の回答で言及されているように、他のステートメントを確認する必要があります。

アップデート

別のユーザーに関するあなたの質問の明らかに別のものを見た: jQueryを使用して構文エラーを取得する

フォームタグが表示されず、jQueryがデータを送信しようとしていないようです。<form>フォームをタグでラップする必要があります。何かのようなもの :

<form method="post" action="you_page.php">
    <!-- form fields / inputs -->
</form>

この場合、javascript / phpを開始する前に、HTMLをブラッシュアップする必要があります。始めるためにこれを見てください:HTMLフォーム

于 2012-10-23T12:55:18.723 に答える