【问题标题】:else if statement in javascript not able to display validation message否则javascript中的if语句无法显示验证消息
【发布时间】:2013-01-11 11:35:34
【问题描述】:

我无法根据验证中的 if/else 语句显示字符串。

如果您查看下面的代码,如果满足if 语句,那么它显示的消息很好,但是当我确保满足if 语句并故意使else if 语句失败时,而不是显示一条消息,它只显示一个空白。为什么在下面的javascript验证中遇到else if语句时不显示消息:

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 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 alert message 只是一个空字符串""

【问题讨论】:

  • @DaveNewton 哈哈!严重地? :P
  • ^这个........

标签: javascript html


【解决方案1】:

这样改写你的 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 放在 &lt;head&gt; 部分中。

<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;
}

【讨论】:

  • 嗨,我已经尝试了上面的代码,但我在控制台中收到 noStudentsO is null 错误。
  • 我只想说#addtextarea 实际上是一个选择框而不是文本区域。我想检查是否没有选项
  • @user1964964 可以使用 jQuery 吗?
  • 如果你更喜欢用户 jquery,那就去吧
  • 哈哈,我也该睡觉了。非常感谢:)
【解决方案2】:

这就是魔法:

else {
    studentAssesMsgO.innerHTML = ""; 
    alert(noStudentsO.value); // tell me why I'm in this block
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-08
    • 2020-06-09
    • 2012-11-12
    • 1970-01-01
    • 2018-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多