Changeset 53 for Dev/trunk/classes


Ignore:
Timestamp:
07/26/11 15:02:58 (14 years ago)
Author:
fpvanagthoven
Message:

Inputchecking for integers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • Dev/trunk/classes/SurveyCreationTool.php

    r50 r53  
    3737            /* autosave every 3 minutes */
    3838            setTimeout("save('<?php echo $id; ?>')", 180000);
    39                                                                                                                                                                            
     39                                                                                                                                                                                                           
    4040            var questionCount = 1;         
    41                                                                                                                                                                                                                                                                                                                    
     41                                                                                                                                                                                                                                                                                                                                                   
    4242            function getNewQuestion(title, description)
    4343            {
    4444                if (title == null)
    4545                    var title = 'Untitled Question';
    46                                                                                                                
     46                                                                                                                                               
    4747                if (description != null)
    4848                    var description = description;
    4949                else
    5050                    var description = 'Write a question description here.';
    51                                                                                                                                    
     51                                                                                                                                                                   
    5252                var questionDiv = document.createElement("div");
    5353                var htmlStr =
     
    7070                    "<div id='answersDiv" + questionCount + "' class='answersDiv'></div>" +
    7171                    "</div>";
    72                                                                                                                                                                                                                                                                                                                
     72                                                                                                                                                                                                                                                                                                                                               
    7373                questionDiv.innerHTML = htmlStr;
    74                                                                                                                                                                                                                                                                                                                
     74                                                                                                                                                                                                                                                                                                                                               
    7575                return questionDiv;
    7676            }
    77                                                                                                                                                                                                                                                                                                                    
     77                                                                                                                                                                                                                                                                                                                                                   
    7878            function handleFocus(input)
    7979            {
     
    9090                }
    9191            }
    92                                                                                                                                                                                                                                                                                                                                                    
     92                                                                                                                                                                                                                                                                                                                                                                                   
    9393            function handleBlur(input)
    9494            {       
    9595                var surveyTitle = document.getElementById('surveyTitle');
    9696                var surveyDescription = document.getElementById('surveyDescription');
    97                                                                                                                                                                                                                                                                                                                                    
     97                                                                                                                                                                                                                                                                                                                                                                   
    9898                if (input.value == "")
    9999                {
    100100                    input.style.color = "gray";
    101101                    input.clicked = null;
    102                                                                                                                                                                                                                                                                                                                                                            
     102                                                                                                                                                                                                                                                                                                                                                                                           
    103103                    if (input == surveyTitle)
    104104                    {
     
    111111                }                           
    112112            }
    113                                                                                                                                                                                                                                                                                                    
     113                                                                                                                                                                                                                                                                                                                                   
    114114            function handleType(select, answers)
    115115            {
     
    117117                var type = select.valueOf().value;
    118118                var answersDiv = document.getElementById("answersDiv" + numQ );
    119                
     119                                               
    120120                removeQuestionID(numQ);
    121                
     121                                               
    122122                answersDiv.answerCount = 1;
    123123                answersDiv.clicked = null;
    124                                                                                                                                                                                                                                                        
     124                                                                                                                                                                                                                                                                                       
    125125                switch (type) {
    126126                    case 'mc':
     
    135135                        else
    136136                            addOption(numQ);
    137                                                                                                                                                                                                                                                                                        
     137                                                                                                                                                                                                                                                                                                                       
    138138                        break;
    139139                    case 'text':
     
    142142                    case 'int':   
    143143                        answersDiv.innerHTML = "";
    144                                                                                                                
     144                                                                                                                                               
    145145                        //min max
    146146                        if (answers != null)
     
    174174
    175175            }
    176            
     176                                           
    177177            function handleAnswerChange(questionNumber)
    178178            {
    179179                removeQuestionID(questionNumber);
    180180            }
    181            
     181                                           
    182182            function removeQuestionID(questionNumber)
    183183            {
     
    191191
    192192            }
    193                      
    194                                                                                                                                                                                                                                                                            
     193                                                    
     194                                                                                                                                                                                                                                                                                                           
    195195            function addOption(questionNumber, optionStr)
    196196            {       
     
    198198                var answerCount = answersDiv.answerCount;
    199199                var answerDiv = document.createElement("div");
    200                                                
     200                                                                               
    201201                if (optionStr == null)
    202202                    var optionStr = "Option " + answerCount;
    203                                                
    204                                                
     203                                                                               
     204                                                                              
    205205                answerDiv.className = "answerDiv";
    206                                                                                                                                                                                                                                                                                
     206                                                                                                                                                                                                                                                                                                               
    207207                var htmlStr = "<input type='text' name='q" +
    208208                    questionNumber + "ans" + answerCount + "' onchange='handleAnswerChange(" + questionNumber + ")' value='" + optionStr + "' />";
    209                                                                                                                                                                                                                                                        
     209                                                                                                                                                                                                                                                                                       
    210210                if (answersDiv.clicked == null)
    211211                {
     
    213213                        + " class='surveyButton' onclick='addOption(" + questionNumber + ")' value='Add Option' />" +
    214214                        "<input type='button' class='surveyButton' onclick='removeOption(" + questionNumber + ")' value='x' />";
    215                                                                                                                                                                                                                            
     215                                                                                                                                                                                                                                                           
    216216                    answersDiv.clicked = true;
    217217                }
    218                                                                                                                                                                                                                                                                                        
     218                                                                                                                                                                                                                                                                                                                      
    219219                answerDiv.innerHTML = htmlStr;
    220                                                                                                                                                                                                                        
     220                                                                                                                                                                                                                                                       
    221221                answerDiv.prev = answersDiv.lastAnswer; //singly linked list
    222222                answersDiv.lastAnswer = answerDiv;
    223                                                                                                                                                                                                                                                                                        
     223                                                                                                                                                                                                                                                                                                                      
    224224                answersDiv.appendChild(answerDiv);
    225225                answersDiv.answerCount++;
    226                
     226                                               
    227227                handleAnswerChange(questionNumber);
    228228            }
    229                                                                                                                                                                                                                    
     229                                                                                                                                                                                                                                                   
    230230            function removeOption(questionNumber)
    231231            {
    232232                var answersDiv = document.getElementById("answersDiv" + questionNumber);
    233                                                                                                                                                                                                                        
     233                                                                                                                                                                                                                                                      
    234234                if (answersDiv.lastAnswer.prev != null)
    235235                {
     
    238238                    answersDiv.answerCount--;
    239239                }
    240                
     240                                               
    241241                handleAnswerChange(questionNumber);
    242242            }
    243                                                                                                                                                                                                                                            
     243                                                                                                                                                                                                                                                                           
    244244            function minMax(questionNumber, min, max)
    245245            {
     
    248248                if (max == null)
    249249                    var max = '';
    250                                                                                                        
     250                                                                                                                                       
    251251                var answersDiv = document.getElementById("answersDiv" + questionNumber);
    252                                                                                                                                                                                                                                                
     252                                                                                                                                                                                                                                                                              
    253253                var answerDiv = document.createElement("div");
    254                                                                                                                                                                                                                
     254                                                                                                                                                                                                                                               
    255255                answerDiv.className = "answerDiv";
    256                 answerDiv.innerHTML = "<label for='min'>Min</label><input type='text' value='" + min + "' name='q" + questionNumber + "ans1' />" +
    257                     "<label for='max'>Max</label><input type='text' value='" + max + "' name='q" + questionNumber + "ans2' />";
    258                                                                                                                                                                                                                                            
     256                answerDiv.innerHTML = "<label for='min'>Min</label><input type='text' class='intBox' onchange='checkInt(this)' value='" + min + "' name='q" + questionNumber + "ans1' />" +
     257                    "<label for='max'>Max</label><input type='text' class='intBox' onchange='checkInt(this)' value='" + max + "' name='q" + questionNumber + "ans2' />";
     258                                                                                                                                                                                                                                                                          
    259259                answersDiv.appendChild(answerDiv);
    260260            } 
    261                                                                                                                                                                                                                                            
     261                                                                                                                                                                                                                                                                           
    262262            function minMaxIncr(questionNumber, left, right, incr)
    263263            {
     
    268268                if (incr == null)
    269269                    var incr = '';
    270                                                        
     270                                                                                       
    271271                var answersDiv = document.getElementById("answersDiv" + questionNumber);
    272                                                                                                                                                                                                                                                
     272                                                                                                                                                                                                                                                                              
    273273                var answerDiv = document.createElement("div");
    274274                answerDiv.className = "answerDiv";
    275275                answerDiv.innerHTML = "<label>Left label</label><input type='text' value='" + left + "' onchange='handleAnswerChange(" + questionNumber + ")' name='q" + questionNumber + "ans1' />" +
    276276                    "<label>Right label</label><input type='text' value='" + right + "' onchange='handleAnswerChange(" + questionNumber + ")' name='q" + questionNumber + "ans2' />" +
    277                     "<label>Scale count</label><input type='text' value='" + incr + "' onchange='handleAnswerChange(" + questionNumber + ")' name='q" + questionNumber + "ans3' />" +
     277                    "<label>Scale count</label><input type='text' class='intBox' value='" + incr + "' onblur='checkInt(this)' onchange='handleAnswerChange(" + questionNumber + ")' name='q" + questionNumber + "ans3' />" +
    278278                    "<div id='inputCheckFeedback'" + questionNumber + "";
    279                                                                                                                                                                                                                                            
     279                                                                                                                                                                                                                                                                          
    280280                answersDiv.appendChild(answerDiv);
    281281            }         
    282                                                                                                                                                                                                                                                                                                  
    283                                                                                                                                                                                                                                                                                                          
     282                                                                                                                                                                                                                                                                                                                                
     283                                                                                                                                                                                                                                                                                                                                        
    284284            function addQuestion(title, description)
    285285            {
    286286                var questionsDiv = document.getElementById('questionsDiv');
    287287                var newQuestion = getNewQuestion(title, description);
    288                                                                                                                                                                                                                                        
     288                                                                                                                                                                                                                                                                       
    289289
    290290                newQuestion.prev = document.lastQuestion;
     
    294294                questionCount++;
    295295            }
    296                                                                                                                                                                                                                                    
     296                                                                                                                                                                                                                                                                   
    297297            function removeLastQuestion()
    298298            {
    299299                var questionsDiv = document.getElementById('questionsDiv');
    300                                                                                                                                                                                                                                        
     300                                                                                                                                                                                                                                                                       
    301301                if (document.lastQuestion.prev != null)
    302302                {
     
    310310                }               
    311311            }
    312                                                                                                                                                                                                              
     312                                                                                                                                                                                                                                            
    313313            function save(surveyID)
    314314            {
     315                if (checksPassed())
     316                {
     317                    var form = document.getElementById('survey');
     318                    var questionsDiv = document.getElementById('questionsDiv');
     319                    form.action = "surveycreation.php";
     320                                                                                                                                                                                                               
     321                    /* extra time stamp */
     322                    var date = new Date();
     323                    var minutes = date.getUTCMinutes();
     324                    if (minutes < 10)
     325                        minutes = "0" + minutes;
     326                    var timeStamp = date.getHours() + ":" + minutes;
     327                    var timeStampInput = document.createElement("input");
     328                    timeStampInput.name = "timeStamp";
     329                    timeStampInput.value = timeStamp;
     330                    timeStampInput.type = "hidden";
     331                                                                                                                                                                   
     332                    var surveyIDInput = document.createElement("input");
     333                    surveyIDInput.name = "surveyID";
     334                    surveyIDInput.value = surveyID;
     335                    surveyIDInput.type = "hidden";
     336                                                                                                                                                                                             
     337                    questionsDiv.appendChild(timeStampInput);
     338                    questionsDiv.appendChild(surveyIDInput);
     339                    form.submit();
     340                }
     341            }
     342                                           
     343            function selectAll(input)
     344            {
     345                input.select();
     346            }
     347                                           
     348            /* --- input checking --- */
     349            function checksPassed()
     350            {
    315351                var form = document.getElementById('survey');
    316                 var questionsDiv = document.getElementById('questionsDiv');
    317                 form.action = "surveycreation.php";
    318                                                                                                                                                                                
    319                 /* extra time stamp */
    320                 var date = new Date();
    321                 var minutes = date.getUTCMinutes();
    322                 if (minutes < 10)
    323                     minutes = "0" + minutes;
    324                 var timeStamp = date.getHours() + ":" + minutes;
    325                 var timeStampInput = document.createElement("input");
    326                 timeStampInput.name = "timeStamp";
    327                 timeStampInput.value = timeStamp;
    328                 timeStampInput.type = "hidden";
    329                                                                                                                                    
    330                 var surveyIDInput = document.createElement("input");
    331                 surveyIDInput.name = "surveyID";
    332                 surveyIDInput.value = surveyID;
    333                 surveyIDInput.type = "hidden";
    334                                                                                                                                                              
    335                 questionsDiv.appendChild(timeStampInput);
    336                 questionsDiv.appendChild(surveyIDInput);
    337                 form.submit();
    338             }
    339            
    340             function selectAll(input)
    341             {
    342                 input.select();
    343             }
    344                                                                                                                                                                                                                                                                                                                                                                                                            
     352                       
     353                for (var i = 0; i < form.length; i++)
     354                {
     355                    if (form.elements[i].checkPassed == 'no')
     356                        return false;
     357                }
     358                return true;
     359            }
     360                   
     361            function checkInt(input)
     362            {
     363                input.style.borderWidth = '1px' ;
     364                var value = input.value;
     365                if (isNaN(value))
     366                {
     367                    input.style.borderColor = 'red';
     368                    input.checkPassed = 'no';
     369                }
     370                else
     371                {
     372                    input.style.border = '1px solid #abadb3';
     373                    input.checkPassed = null;
     374                }
     375            }
     376                                           
     377                                                                                                                                                                                                                                                                                                                                                                                                                                           
    345378        </script>
    346379        <?php
     
    389422        <?php
    390423    }
    391    
     424
    392425    private function surveyLink() {
    393         if (isset($this->survey))
    394         {
    395                 $surveyID = $this->survey->id;
    396                
    397                 $link = $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) .
     426        if (isset($this->survey)) {
     427            $surveyID = $this->survey->id;
     428
     429            $link = $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) .
    398430                    '/survey.php?id=' . $surveyID;
    399         ?>
    400         <input type="text" value="<?php echo $link; ?>" id="surveyLink" onclick="selectAll(this)">
    401         <?php
     431            ?>
     432            <input type="text" value="<?php echo $link; ?>" id="surveyLink" onclick="selectAll(this)">
     433            <?php
    402434        }
    403435    }
     
    419451                }
    420452                ?>
    421                                                                                                    
     453                                                                                                                                                                   
    422454                    addQuestion('<?php echo $question->title; ?>', '<?php echo $question->description; ?>');
    423                                                                                                                                                                                                    
     455                                                                                                                                                                                                                                                                   
    424456                    var select = document.getElementById('<?php echo $numQ; ?>');
    425457                    var type = '<?php echo $question->type; ?>';
     
    433465                        }
    434466                    }     
    435                                    
    436                                    
     467                                                                                                   
     468                                                                                                   
    437469                    /* questionID stuff */
    438470                    var questionIDInput = document.createElement("input");
     
    441473                    questionIDInput.value = "<?php echo $question->id; ?>";
    442474                    questionIDInput.type = "hidden";
    443                                                                                                                                                                                      
     475                                                                                                                                                                                                                                                    
    444476                    document.getElementById("questionsDiv").appendChild(questionIDInput);
    445477
Note: See TracChangeset for help on using the changeset viewer.