Javascript问题问题

时间:2013-05-01 18:31:17

标签: javascript dom

嘿伙计们,我正在创建一个客户名称文本字段,并有这些要求。

获取名称中有多少个字符

检查名称是否大于6,如果是,则继续下一步检查

检查第一个字符是否为空格然后失败

如果最后一个字符是空格则失败

必须在名称

的某处有空格

这是我到目前为止所做的,它不起作用所以我知道它的语法可以有人帮助我吗?我也不能做必须有一个空格部分,我假设Il必须循环遍历名称并检查当前char是否每次都是空格,如果是这样,添加到变量然后在结束时检查变量是否高于0?< / p>

<script type="text/javascript" language="javascript">
    var NamePass = true;

    function ValidateName()
    {
        var BlankPass = true;
        var GreaterThan6Pass = true;
        var FirstBlankPass = true;

        if (document.getElementById('Name').value=="")
        {
            document.getElementById('Name').style.background="red";
            BlankPass = false;
        }

        var Size = document.getElementById('Name').value.lastIndexOf();
        if (Size>7)
        {
            document.getElementById('Name').style.background="red";
            GreaterThan6Pass = false;
        }

        if (document.getElementById('Name').value.(str.substring(0,1)==" ")
        {
            document.getElementById('Name').style.background="red";
            FirstBlankPass = false;
        }

        var LastIndex = document.getElementById('Name').value.lastIndexOf();
        if (document.getElementById('Name').value.(str.substring((LastIndex-1),1)==" ")
        {
            document.getElementById('Name').style.background="red";
            FirstBlankPass = false;
        }   

        if (BlankPass == false || GreaterThan6Pass == false || FirstBlankPass == false )
        {
            NamePass = false;
        }
    }
</script>
<body>

<b>Customer Information</b><br>
<dd>Your name: 
<input type=text name="Name" size=40 maxlength=40 id="Name"     onblur="ValidateName()">
<img id="NameTick" style="width: 15; height: 15;     visibility:hidden;" src="Tick.png" />
<br>

2 个答案:

答案 0 :(得分:1)

jsFiddle here.


您似乎有一些语法错误,即:

if (document.getElementById('Name').value.(str.substring(0,1)==" ")

应该是:

if (document.getElementById('Name').value.substring(0,1) == " ")

if (document.getElementById('Name').value.(str.substring((LastIndex-1),1)==" ")

应该是:

if (document.getElementById('Name').value.substring((LastIndex-1),1) == " ")

修改:

关于你的评论,我已经完成了你的代码并改变了你的所有逻辑,使其按照你的意愿工作,这里的代码太多了,所以我只想离开jsFiddle here对你而言。

答案 1 :(得分:0)

你这样做的方式非常复杂,你应该使用正则表达式。

有关正则表达式如何工作的信息,请参阅http://www.w3schools.com/jsref/jsref_obj_regexp.asp

对于名称带有空格,名字和姓氏各自至少3个字符的名称,您的正则表达式将如下所示:[A-Za-z]{3,}\ [A-Za-z]{3,}