1

ここからアクセスできるアプリケーションがあります: application

アプリで、モジュールのドロップダウン メニューをPlease Selectオプションのままにして送信します。モジュールを選択するように指示するメッセージが表示されます。それでは、ドロップダウンからモジュールを選択して送信してください。下にドロップダウンメニューが表示されていることがわかりAssessmentます(そのモジュールに関連する評価)。

Assessmentここで、ドロップダウン メニューをドロップダウン メニューと同じように実行したいと考えていModuleます。評価が選択されていない場合は、下にメッセージが表示されます。評価が選択されている場合は、下に次のフォームが表示されます。ドロップ ダウン メニューと送信はドロップ ダウン メニューとAssessment同じようにModule表示され、送信は引き続きページに表示されます。

問題は、評価オプションを選択するかどうかを確認できるように、代わりに次のフォーム ブロック (複数の選択ボックスを表示) に置き換えられることです。ユーザーが送信時にドロップダウン メニューで評価を選択していない場合は選択ボックスを表示しないようにするか、評価が選択されている場合は評価ドロップダウン メニューと送信ボタンの下に表示し、置き換えないようにします。

しかし、これを引き起こしているのは何ですか?また、本来の機能を実行させることはできますか?

以下は、コードの短縮版です。

コード:

 <script type="text/javascript">


    function validation(e) {

                    var isDataValid = true;

                    var moduleTextO = document.getElementById("modulesDrop");

                    var errModuleMsgO = document.getElementById("moduleAlert");

             if (moduleTextO.value == ""){
              $('#targetdiv').hide();
              $('#assessmentForm').hide();
              errModuleMsgO.innerHTML = "Please Select a Module";
              isDataValid = false;    
            }else{
                    errModuleMsgO.innerHTML = ""; 
                    $('#assessmentForm').show();
                }

                    if (isDataValid === false)
        {
            if (e.preventDefault)
            {
                e.preventDefault();
                e.stopPropagation();//VERY important
            }
            e.returnValue = false;
            e.cancelBubble = true;
        }

                return isDataValid;

                }


                function sessionvalidation(e) {

                    var isDataValid = true;

                    var sessionTextO = document.getElementById("sessionsDrop");

                    var errAssesMsgO = document.getElementById("assessmentAlert");

             if (sessionTextO.value == ""){
              $('#assessmentdiv').hide();
              $('#studentExistForm').hide();
              errAssesMsgO.innerHTML = "Please Select an Assessment";
              isDataValid = false;    
            }else{
                    errAssesMsgO.innerHTML = ""; 
                    $('#studentExistForm').show();   
                     $('#assessmentForm').show();
                }

                    if (isDataValid === false)
        {
            if (e.preventDefault)
            {
                e.preventDefault();
                e.stopPropagation();//VERY important
            }
            e.returnValue = false;
            e.cancelBubble = true;
        }

                return isDataValid;

                }


                </script>

        <?php

    $moduleHTML  = "";  
    $moduleHTML .= '<select name="modules" id="modulesDrop">'.PHP_EOL;
    $moduleHTML .= '<option value="">Please Select</option>'.PHP_EOL;  
    $moduleHTML .= '</select>'; 


        ?>


    <form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" onsubmit="return validation(event);">
    <table>
    <tr>
    <th>Module: <?php echo $moduleHTML; ?></th>
    </tr>
    </table>
    <p><input id="moduleSubmit" type="submit" value="Submit Module" name="moduleSubmit" /></p>
    <div id="moduleAlert"></div>
    <div id="targetdiv"></div>
    </form>

    <?php

    if (isset($_POST['moduleSubmit'])) {    

     $moduleInfo = explode("_", $_POST['modules']);
     $moduleNo = $moduleInfo[0];
     $moduleName = $moduleInfo[1];
     $moduleId = $moduleInfo[2];
     $outputmodule = sprintf("<p><strong>Selected Module:</strong> %s - %s <input type='hidden' value='%s'></p>", $moduleNo, $moduleName, $moduleId);


    $sessionHTML = '';  
    $sessionHTML = '<select name="session" id="sessionsDrop">'.PHP_EOL;
    $sessionHTML .= '<option value="">Please Select</option>'.PHP_EOL;           
    $sessionHTML .= sprintf("<option value='%s'>%s - %s - %s</option>", $dbSessionId, $dbSessionName, date("d-m-Y",strtotime($dbSessionDate)), date("H:i",strtotime($dbSessionTime))) . PHP_EOL;            
    $sessionHTML .= '</select>';

    $assessmentform = "<div id='lt-container'>
    <form action='".htmlentities($_SERVER['PHP_SELF'])."' method='post' id='assessmentForm'>
    {$outputmodule}
    <p><strong>Assessments:</strong> {$sessionHTML} </p>  
    <p><input id='assessmentSubmit' type='submit' value='Submit Assessment' name='assessmentSubmit' /></p>
    <div id='assessmentAlert'></div>
    <div id='assessmentdiv'></div> 
    </form>
    </div>";

    echo $assessmentform;

    }

    if (isset($_POST['assessmentSubmit'])) {     

    $studentHTML = '';      
    $studentSELECT = '<select name="studenttextarea" id="studentselect" size="6">'.PHP_EOL;      
    $studentSELECT .= "<option disabled='disabled' class='red' value=''>No Students currently in this Assessment</option>"; 
    $studentSELECT .= sprintf("<option disabled='disabled' value='%s'>%s - %s %s</option>", $dbStudentId, $dbStudentAlias, $dbStudentForename, $dbStudentSurname) . PHP_EOL;    
    $studentSELECT .= '</select>';

    $studentexist="
    <form id='studentExistForm'>
    <p><strong>Current Active Students in Assessment:</strong></p>
    <p>{$studentSELECT}</p>
    </form> 
    </div>";

    echo $studentexist;

    }

    ?>
4

1 に答える 1

1

2 番目のセクションが表示されていないのは、評価送信フォームをクリックして$_POST['moduleSubmit']も設定されないためです。

あなたは変えることができます

if (isset($_POST['moduleSubmit']))

if (isset($_POST['moduleSubmit']) || isset($_POST['assessmentSubmit']))

どちらかが設定されている場合にそのセクションが表示されるようにします(どちらかのフォームが送信されました)

于 2013-01-08T02:31:18.333 に答える