2012-11-30 134 views
0

下面我有它包含其中包含文本输入下拉菜单形式的代码:如何隐藏/显示JavaScript中的消息,当他们应该隐藏/显示?

现在我想用JavaScript来验证表单及以下的JavaScript验证码:

function editvalidation() { 

var isDataValid = true; 

var currentCourseO = document.getElementById("currentCourseNo"); 
var newCourseNoO = document.getElementById("newCourseNo"); 

var currentCourseMsgO = document.getElementById("currentAlert"); 
var newCourseMsgO = document.getElementById("newAlert"); 


if (currentCourseO.value == ""){ 
currentCourseMsgO.innerHTML = "Please Select a Course to edit from the Course Drop Down Menu"; 
$('#newAlert').hide(); 
isDataValid = false; 
}else{ 
currentCourseMsgO.innerHTML = ""; 
} 


if (newCourseNoO.value == ""){ 
newCourseMsgO.innerHTML = "Please fill in the Course ID in your Edit"; 
$('#newAlert').show(); 
isDataValid = false; 
} else{ 
newCourseMsgO.innerHTML = ""; 
} 


return isDataValid; 

} 

现在,这是我收到的问题:

什么我想状态我的javascript验证,如果#currentCourseNo为空(文字输入为空),那么它会显示错误我ssage for属于div标签#currentAlert,但它隐藏显示在div标签#newAlert中的消息。如果#currentCourseNo不为空,则显示#newAlert错误消息(如果有)。

我遇到的问题是当#currentCourseNo文本输入为空时,它仍然显示#newAlert错误消息,当它真的应该被隐藏。为了实现我想实现的目标,需要在上面的javascript中更改哪些内容?

+6

做StackOverflow社区的一个忙,减少这个代码的最小可能的例子,演示你的错误。这是很多未格式化的代码来解决一个可以在一小部分代码中表达的问题。 – Triptych

+0

@Triptych我upvoted你的评论,我减少了代码,对不起,代码过载的每个人:) – Manixman

回答

1

首先,了解jQuery。

为了您的过程中,我的常用流程添加验证的第一遍上的输入模糊事件,和第二(完全一样)验证PAS对表单的提交事件,类似:

var error = $('.errormsg'); 

var checks = 
{ 
    "fieldName1": function(val) { return /*true or an error string*/ }, 
    "fieldName2": function(val) { return /*true or an error string*/ } 
}; 

$('input') 
.focus(function() 
{ 
    $(this).removeClass('error'); 
}) 
.blur(function() 
{ 
    error.slideUp(200); 

    var check = checks[this.name]; 
    if (!check) { return; } 

    var validation = check(this.value); 

    if (typeof validation === "string") 
    { 
    $(this).addClass('error'); 
    error.text(validation).slideDown(200); 
    } 
}); 

$('form').submit(function(e) 
{ 
    //e.preventDefault(); 

    if ($('input.error').length != -1) 
    { 
    error.text('All fields are required').slideDown(200); 
    return; 
    } 

    for(var check in checks) 
    { 
    var field = $('input[name="' + check + '"]'); 
    if (field.length == -1) { continue; } 

    var validation = check(field.val()); 

    if (typeof validation === "string") 
    { 
     field.addClass('error'); 
     error.text(validation).slideDown(200); 
     return; 
    } 
    } 
}); 
+0

我有点厌倦,对不起,如果出现一些错误 –

+0

嗨,谢谢你的答案,但我被告知只有可以使用javascript,不允许使用jquery,老师的偏好不要使用jQuery,因为他希望我们先学习javascript。 – Manixman

+0

没有什么你不能用常规的javascript做。用jQuery更简单。所以我不认为这会很难重写成简单的老js;) –