html中的JavaScript问题

JavaScript problems in html

本文关键字:问题 JavaScript 中的 html      更新时间:2023-09-26

HTML代码:

<html>
<head>
    <title>Registration</title>
    <script src="val_registration.js" type="text/javascript"></script>
</head>
<body>
        <form action="" method="post" id="myform">
        <table>
        <tr>
        <td><label for="Last_name">Last name:<span id="imp">*</span></label></td><td><input type="text" id="Last_name" tabindex="5"/>
        <br/><span class="eg">&nbsp;eg:Le You</span></td></td>
        </tr>
        <tr>
        <td><label for="E_mail">E-mail:<span id="imp">*</span></label></td>
        <td><input type="text" id="E_mail" tabindex="10"/>
        <br/><span class="eg">&nbsp;eg:abc123@hotmail.com</span></td></td>
        </tr>
        <tr>
        <td colspan="4"><input type="submit" value="Confirm" id="confirm2" tabindex="11" onclick="val_registration ()"/>
        <input type="reset" value="Cancel" id="cancel2" tabindex="12"/></td>
        </tr>
        </table> 
        </form>
</body>
</html>

JavaScript代码:

    function val_registration () {
    var err = "";    
    var val_Last_name = document.getElementById("Last_name").value;
    var string_Last_name = /^[a-zA-Z@'-_().,]{1,}$/;
    if (val_Last_name == null || val_Last_name == "" || !string_Last_name.test(val_Last_name))    
    {
        err += "'u2022Lastname cannot be blank/Lastname can contain'n alphabets or special symbols(@ ' - _ ( ).,) only.'n";
    }   

    var val_E_mail = document.getElementById("E_mail").value;
    var atpos = val_E_mail.indexOf("@");
    var dotpos = val_E_mail.lastIndexOf(".");
    if (atpos<1 || dotpos<atpos+2 || dotpos+2> = val_E_mail.length)
    {
        err += "'u2022E-mail cannot be blank/E-mail format must follow'n the example provided.'n";
    }
    alert(err);}

根据以下代码,我想问3个问题:

首先,为什么警报没有弹出?我的电子邮件验证有什么问题吗?

第二,尽管我有这个正则表达式(/^[a-zA-Z@'-_().,]{1,}$/),为什么在姓字段中可以输入诸如<,>,/, *等错误数据?我只希望用户输入字母数据和上面正则表达式中给出的特殊符号。此外,我还发现数字和字母数据的组合也可以输入到这个字段。为什么会这样呢?

第三,我可以删除输入字段的边界吗?如果这是可以做到的,那么该怎么做呢?

为什么没有弹出警报??我的电子邮件验证有什么问题吗?

你得到了> =,而它应该是>=。并以===null作比较。


为什么可以输入<、>、/、*等错误数据

因为你的正则表达式的一部分是'-_x-y形式的字符类中的-表示允许xy范围内的所有字符,<属于'_范围。

解决方案吗?使用

 `/^[a-zA-Z@''-_()'.,]{1,}$/`.
         ^-- escaped it

我可以删除输入字段的边界吗?如果这是可以做到的,那么该怎么做呢?

使用:

input[type='text']{ /* only textboxes */
    border:none;   /*No border nor outline*/
    outline:none;  
    -webkit-user-select:none;  /*Disable user-select - the blue border when user clicks 
    TODO:add vendor prefixes for user-select*/
}

完全固定代码

1你的代码中有一个语法错误:if (atpos<1 || dotpos<atpos+2 || dotpos+2> = val_E_mail.length)

应该成为

if (atpos<1 || dotpos<atpos+2 || dotpos+2 >= val_E_mail.length)

(注意>=)

2仔细看看你的正则表达式,注意这一部分:'-_它实际上把这个看成一个值域。转义-字符:'-,或将其放在字符范围的最末尾。

3 input { border:none; }

这应该能回答你所有的问题。但是,下次一定要尝试将这些问题分成不同的SO问题,因为这通常会因为不够具体而关闭。

检查空白输入

代替

val_Last_name == null || val_Last_name == ""
最好使用

,这样可以消除用例

中的空格。
val_Last_name.trim()

你不需要检查空值,因为你是指定DOM的ID的人。


<标题> 2。对于电子邮件验证,可以使用
function check_email(email) {
    var valid_email = /^'s*['w'-'+_]+('.['w'-'+_]+)*'@['w'-'+_]+'.['w'-'+_]+('.['w'-'+_]+)*'s*$/;
    return String(email).search (valid_email) != -1;
}
p>
3。要删除边框,可以通过css
input
{
border: 0px;
}


额外提示:使用jQuery(少写,多做)
你的document.getElementById("element")变成$('#element')

改变下面一行

if (atpos<1 || dotpos<atpos+2 || dotpos+2> = val_E_mail.length)

if (atpos<1 || dotpos< (atpos+2) || (dotpos+2) >= val_E_mail.length)

需要加双引号。