2

検証のif/elseステートメントによっては、文字列の表示に問題があります。

以下のコードを見ると、ifステートメントが満たされている場合は問題のないメッセージが表示されますが、ステートメントが満たされていることを確認してif意図的にelse ifステートメントを失敗させると、メッセージを表示する代わりに空白が表示されます。else if以下のJavaScript検証でステートメントが満たされ たときにメッセージが表示されないのはなぜですか。

function editvalidation() {
     var isDataValid = true;
     var currentAssesO = document.getElementById("currentAssessment");
     var noStudentsO = document.getElementById("addtextarea");
     var studentAssesMsgO = document.getElementById("studentAlert");

     studentAssesMsgO.innerHTML = "";

     if (currentAssesO.value == ""){
         $('#targetdiv').hide();
         studentAssesMsgO.innerHTML = "Please Select an Assessment to edit from the Assessment Drop Down Menu";
         isDataValid = false; 
     }else if (noStudentsO.value == ""){
         $('#targetdiv').hide();
         studentAssesMsgO.innerHTML = "You have not Selected any Students you wish to Add into Assessment";
         isDataValid = false; 
     }
     else{
         studentAssesMsgO.innerHTML = ""; 
     }

     return isDataValid;
}

アップデート:

HTML:

SELECT BOX(オプションはこのボックスに追加されます):

<select multiple="multiple" name="addtextarea" id="studentadd" size="10">
</select>

ドロップダウンメニュー:

<select name="session" id="sessionsDrop">
<option value="">Please Select</option>
<option value='20'>EWYGC - 10-01-2013 - 09:00</option>
<option value='22'>WDFRK - 11-01-2013 - 10:05</option>
<option value='23'>XJJVS - 12-01-2013 - 10:00</option>
</select> </p> 

アラートメッセージ:

<div id='studentAlert'></div>

検証のための要件:

  • ドロップダウンメニューが空の場合は、アラートメッセージdivのドロップダウンメニューから評価を選択する必要があるというメッセージを表示します。

  • ドロップダウンメニューが空でない場合は、選択ボックスにオプションが含まれているかどうかを確認し、選択ボックスにオプションが含まれていない場合は、評価に追加する学生が選択されていないことを示すdivアラートメッセージを置き換えます

  • ドロップダウンメニューが空でなく、選択ボックスが空でない場合(つまり、オプションが含まれている場合)、divアラートメッセージは単なる空の文字列です。""

4

2 に答える 2

2

JavaScriptを次のように言い換えます。

function editvalidation() {
    var isDataValid = true;
    var currentAssesO = document.getElementById("currentAssessment");
    var noStudentsO = document.getElementById("addtextarea");
    var studentAssesMsgO = document.getElementById("studentAlert");
    var errorMsg = "";

    studentAssesMsgO.innerHTML = "";
    if (currentAssesO.value == "" || noStudentsO.value == "") {
        $('#targetdiv').hide();
        isDataValid = false; 

        if (currentAssesO.value == "") {
            errorMsg += "Please Select an Assessment to edit from the Assessment Drop Down Menu";
        }

        if (noStudentsO.value == "") {
            errorMsg += "You have not Selected any Students you wish to Add into Assessment";
        }

        studentAssesMsgO.innerHTML = errorMsg; // Plus whatever styling for messages.
    }

    return isDataValid;
}

更新された回答

これをセクションに入れてjQueryを含めてください<head>

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>

スクリプトを更新します。

function editvalidation()
{
    if ($("#sessionsDrop").val()=="")
        $("#studentAlert").html("Assessment needs to be filled.");
    if ($("#sessionsDrop").val()!="" && $("#studentadd").children().length==0)
        $("#studentAlert").html("No students have been selected to add to assessment.");
    if ($("#sessionsDrop").val()!="" && $("#studentadd").children().length!=0)
        return true;
    return false;
}
于 2013-01-11T01:05:16.227 に答える
1

これが魔法です:

else {
    studentAssesMsgO.innerHTML = ""; 
    alert(noStudentsO.value); // tell me why I'm in this block
}
于 2013-01-11T01:04:36.120 に答える