动态函数调用提交

时间:2012-12-04 12:10:17

标签: javascript function validation

我想验证表单,但我希望有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)"/>

但我如何才能添加此内容,以便在调用range.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


    }

} 

1 个答案:

答案 0 :(得分:3)

使用一系列函数。

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

function validateForm() {        
    validationFunctions[range.value]();
}
相关问题