0

我想验证一个表单,但我想要 9 个不同的函数来验证表单。使用哪个验证功能应由屏幕上的滑块确定,或者由滑块控制的跨度“范围”中的值确定)

如果我只使用一个函数来执行以下操作,我可以很好地验证表单:

<script>
    function validateFormMethod1() {
        // do my validation stuff here
    }
</script>

<form method="post" action="whatevermailscript.php"name="GuestInfo" onSubmit="return validateFormMethod1();">
    <input type="submit" value="Send" name="submit" />
    <span>Guests</span>
    <span id="range">1</span>
    <input id="scaleSlider" type="range" value="1" min="1"  max="9" step="1" onchange="showValue(this.value) ; showOrHide(this.value)"/>

但是我该如何添加这个以便 ifrange.value==2 validateFormMethod2会被调用而不是validateFormMethod1


更新 3:

<script>


   function validateFormMethod0() {

    }  

    function validateFormMethod1() {
       window.alert("Method 1");
       return false;
    }

    function validateFormMethod2() {
        window.alert("Method 2");
        return false;
    }


    function validateFormMethod3() {
      window.alert("Method 3.");
      return false;
    }


    function validateFormMethod4() {
       window.alert("Method 4.");
       return true;
    }





    var validationFunctions = [
    validateFormMethod0,
   validateFormMethod1,
   validateFormMethod2,
   validateFormMethod3,
    validateFormMethod4

];
    function validateForm() {    

     var range = document.getElementById("range");

    validationFunctions[range.innerHTML]();
}


</script>

仍然不能完全按照建议工作,但这符合我的目的:

 function validateForm()
{


 var range = document.getElementById("range");


   if (range.innerHTML == "1")
    {
        // do my validation stuff for case one here


    }


   if (range.innerHTML == "2")
    {
        // do my validation stuff for case two here


    }

} 
4

1 回答 1

3

使用函数数组。

var validationFunctions = [
   validateFormMethod1,
   validateFormMethod2,
   validateFormMethod3,
   ....
];

function validateForm() {        
    validationFunctions[range.value]();
}
于 2012-12-04T12:14:20.447 回答