3
<html>
<head>
</head>
<body>
     <form class="form-horizontal cmxform" id="validateForm" method="get" action="../../course_controller" onsubmit="return validate();" autocomplete="off">


                    <input type="text" id="course_name" name="course_name"  placeholder="Enter Course Name..." class="row-fluid" required onkeyup="javaScript:return validate_course_name();">
                 <label id="course_name_info"  style="color:rgba(255,255,255,0.6);font-size:13px">
                      </label>

                    <input type="text" id="course_desc" name="course_desc"  placeholder="Enter Course Name..." class="row-fluid" required onkeyup="javaScript:return validate_course_desc();">
                 <label id="course_desc_info"  style="color:rgba(255,255,255,0.6);font-size:13px">
                      </label>


                    <button type="submit" name="user_action" value="add" class="btn btn-primary"  >Save</button>
                    <button type="reset" class="btn btn-secondary">Cancel</button>



              </form>
<script type="text/javascript">
  /**** Specific JS for this page ****/

  //Validation things




function validate_course_name(){

     var TCode = document.getElementById('course_name').value;
        if( /[^a-zA-Z1-9 _-]/.test( TCode ) ) {

            document.getElementById('course_name_info').innerHTML="Please Enter Only Alphanumeric or _,-,' ' ";
           return false;
        }
        else
            {
             document.getElementById('course_name_info').innerHTML="Please Enter Only Alphanumeric or _,-,' ' ";
            return true; 
            }


    }

function validate_course_desc(){

     var TCode = document.getElementById('course_desc').value;
        if( /[^a-zA-Z1-9 _-]/.test( TCode ) ) {

            document.getElementById('course_desc_info').innerHTML="Please Enter Only Alphanumeric or _,-,' ' ";
           return false;
        }
        else
            {
             document.getElementById('course_desc_info').innerHTML="Please Enter Only Alphanumeric or _,-,' ' ";
            return true; 
            }


    }
function validate(){


    return validate_course_name();

    return validate_course_desc();

}
</script>
</body>
</html>

所以这是代码......我在两个字段上应用字母数字验证,但问题是如果我给第一个输入字段有效输入和第二个无效表单提交我做错了吗?...我对这个网络很陌生,所以任何帮助将不胜感激:)

4

6 回答 6

2

更新答案:

美好的!只是为了与众不同=)

一行,无论是否validate_course_name()返回都应该验证两个字段false

JSFiddle:http:
//jsfiddle.net/fVqTY/3/

function validate()
{
    return (validate_course_name() * validate_course_desc()) == true;
}

false= 0,true= 1。现在做数学:)

于 2013-05-15T04:09:02.023 回答
1
function validate(){    

    var value1 = validate_course_name();

    var value2 = validate_course_desc();

   if(value1 == true && value2 == true)
     return true;
   else
     return false
}

或者您可以使用

function validate(){

var validate = true;
 var TCode = document.getElementById('course_name').value;
 var TCode1 = document.getElementById('course_desc').value;
    if(! /[^a-zA-Z1-9 _-]/.test( TCode ) ) {
        document.getElementById('course_name_info').innerHTML="Please Enter Only Alphanumeric or _,-,' ' ";
        validate = false;
    }
     if(! /[^a-zA-Z1-9 _-]/.test( TCode1 ) ) {
        document.getElementById('course_name_info').innerHTML="Please Enter Only Alphanumeric or _,-,' ' ";
        validate = false;
    }
    return validate;



}

然后直接调用这个函数

于 2013-05-15T04:07:35.517 回答
1

在这个函数中,你应该只返回一次。所以这里发生的是,当validate_course_name()被执行时,控制已经返回给调用例程。validate_course_desc()行不会执行。

function validate(){


    return validate_course_name();

    return validate_course_desc();

}

你应该做这个:

function validate(){


        var bol1 = validate_course_name();

        var bol2 = validate_course_desc();

if(bol1 == true && bol2 == true)
return true;
else
return false;

}
于 2013-05-15T04:12:20.723 回答
0

更改函数 validate()

function validate()
{


    if(validate_course_name()  && validate_course_desc())
    {
       return true;
    } 

    return false;

}

在函数中执行 return 语句后,return 语句后面的其他语句将不起作用。

因此,每次调用 validate_course_name() 函数时,都会返回一个 bool 值,并且函数 validate_course_desc() 甚至不会被调用/执行。

因此,如果 validate_course_name() 为 true,则 validate 函数返回 true;如果 validate_course_name() 返回 false,则返回 false。因此,当您给第一个字段输入有效而第二个无效时,表单将被提交。

于 2013-05-15T04:08:17.933 回答
0

如下所示的验证方法将在第一个验证方法 ( validate_course_name) 被调用后立即返回,因此它不会执行该validate_course_desc方法。

function validate(){
    return validate_course_name();
    return validate_course_desc();
}

解决方案是同时执行 validate 方法并汇总它们以创建上述答案中给出的返回值

于 2013-05-15T04:12:50.650 回答
0

两个输入字段的验证是相同的,因此您可以创建一个以元素 ID 作为参数的验证函数:

function validateInputfield(id){

     var TCode = document.getElementById(id).value;
     if( /[^a-zA-Z1-9 _-]/.test( TCode ) ) {
         document.getElementById(id).innerHTML="Please Enter Only Alphanumeric or _,-,' ' ";
         return false;
     } else {
         return true; 
     }
}

然后您可以使用该函数validate()检查两个输入字段是否有效:

function validate() {

    if (validateInputfield('course_desc_info') == true &&
        validateInputfield('course_name_info') == true) {

        return true;
    } else {
        return false;
    }

}
于 2013-05-15T04:33:31.643 回答