【问题标题】:having trouble to call function within another function无法在另一个函数中调用函数
【发布时间】:2011-08-08 14:25:50
【问题描述】:
<script language="JavaScript">

    function formCheck() 
    {
        var getValues = new Array();

        getValues[0] = document.getElementById('jumpMenu');
        getValues[1] = document.getElementById('fName');
        getValues[2] = document.getElementById('lName');
        getValues[3] = document.getElementById('fName');
        getValues[4] = document.getElementById('streetAdr');
        getValues[5] = document.getElementById('city');
        getValues[6] = document.getElementById('state');
        getValues[7] = document.getElementById('zipcode');
        getValues[8] = document.getElementById('country');
        getValues[9] = document.getElementById('dob_m');

        if ( getValues[0].value == 'Select Title' ) 
        {
            document.getElementById('jumpMenu').style.backgroundColor='#FFD2D2';
            return false;
        }
        else if ( getValues[1].value == '' ) 
        {
            document.getElementById('fName').style.backgroundColor='#FFD2D2';           
            document.getElementById('fNameError').innerHTML='field is empty';
            document.getElementById("fNameError").style.fontSize="10px";
            document.getElementById("fNameError").style.color="red";
            document.getElementById("fNameError").style.display="inline";
            return false;
        }
        else if ( getValues[2].value == '' ) 
        {
            document.getElementById("lName").style.backgroundColor="#FFD2D2";
            document.getElementById("lNameError").innerHTML="field is empty";
            document.getElementById("lNameError").style.fontSize="10px";
            document.getElementById("lNameError").style.color="red";
            return false;
        }
        else if ( getValues[4].value == '' ) 
        {
            document.getElementById("streetAdr").style.backgroundColor="#FFD2D2";
            document.getElementById("stNameError").innerHTML="field is empty";
            document.getElementById("stNameError").style.fontSize="10px";
            document.getElementById("stNameError").style.color="red";
            return false;
        }
        else if ( getValues[5].value == '' ) 
        {
            document.getElementById("city").style.backgroundColor="#FFD2D2";
            document.getElementById("cityError").innerHTML="field is empty";
            document.getElementById("cityError").style.fontSize="10px";
            document.getElementById("cityError").style.color="red";
            return false;
        }
        else if ( getValues[6].value == '' ) 
        {
            document.getElementById("state").style.backgroundColor="#FFD2D2";
            document.getElementById("stateError").innerHTML="field is empty";
            document.getElementById("stateError").style.fontSize="10px";
            document.getElementById("stateError").style.color="red";
            return false;
        }
        else if ( getValues[7].value == '' ) 
        {
            document.getElementById("zipcode").style.backgroundColor="#FFD2D2";
            document.getElementById("zipcodeError").innerHTML="field is empty";
            document.getElementById("zipcodeError").style.fontSize="10px";
            document.getElementById("zipcodeError").style.color="red";
            return false;
        }
    }



    function normalColor(val)
    {
        document.getElementById(val).style.backgroundColor="";

    }

</script>

大家好,

好吧,我正在用 javascript 编写代码,如您所见,我正在执行表单验证...所以我声明数组,然后将日期放入数组,然后使用 if、else if 语句执行验证,还使用 ​​innerHTML 来显示div 容器中的数据。

但是这些代码显示了我的非专业工作......我真的很讨厌这个......所以我尝试定义新函数,其中存储错误消息位它不能正常工作..

function displayMsg(val)
{
        document.getElementById(val).innerHTML="field is empty";
        document.getElementById(val).style.fontSize="10px";
        document.getElementById(val).style.color="red";
}

但是当我调用这个函数时它什么也没给我

else if ( getValues[1].value == '' ) 
{
    document.getElementById('fName').style.backgroundColor='#FFD2D2';           
        displayMsg(fNameError);
        return false;
}

所以请帮助我弄清楚并给我一些提示,以使我的代码更专业和更好。

【问题讨论】:

  • 您可以尝试使用名为 jQuery (jQuery.com) 的流行 JavaScript 库,它有很多插件可以用于各种常见的 Web 开发需求。有一个很好的 jQuery 验证插件,可以让你上面的代码更小更优雅恕我直言。
  • 谢谢。但我正在学习 Javascript,这就是为什么我只使用 Javascript 来构建验证表单

标签: javascript validation function-pointers


【解决方案1】:

也许您只是缺少来自 fNameError 的引号

    displayMsg("fNameError");

关于使代码更好一点,你可以只评估一次元素而不是重复,所以而不是这样:

    function displayMsg(val)
    {
      document.getElementById(val).innerHTML="field is empty";
      document.getElementById(val).style.fontSize="10px";
      document.getElementById(val).style.color="red";
    }

有这个

    function displayMsg(val)
    {
      var element = document.getElementById(val);
      element.innerHTML = "field is empty";
      element.style.fontSize = "10px";
      element.style.color = "red";
    }

可以说它更容易阅读,而且速度可能稍快。

【讨论】:

  • 非常感谢您的快速响应我已经尝试了您的代码并且它给出了积极的响应,但它只在输入字段中显示红色并且不显示错误消息。
  • codeelse if (getValues[1].value == '') { document.getElementById('fName').style.backgroundColor='#FFD2D2'; displayMsg("fNameError");返回假; } 那样
  • 不显示“字段为空”消息?实际上,您最好使用.setText() 而不是.innerHTML,因为后者被认为是不好的做法。
【解决方案2】:

我想你忘记了引号。尝试像这样调用函数:

displayMsg("fNameError");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-17
    • 2013-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多