html中的JavaScript问题
JavaScript problems in html
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"> 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"> 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
形式的字符类中的-
表示允许x
到y
范围内的所有字符,<
属于'
和_
范围。
解决方案吗?使用
`/^[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的人。
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)
需要加双引号。
- 我不知道我的编码有什么问题.(JavaScript)
- 登录后重定向,缓存页面问题-Javascript
- 在我的网站上创建一个在1-10之间不断变化的数字时遇到了问题.Javascript
- 浮点数字问题JavaScript
- 局部全局变量问题 - JavaScript
- 内容滑块问题 javascript
- 多个脚本导致链接问题?Javascript、CSS、HTML、Jquery
- 基本范围问题(javascript和node)
- 表单验证问题(Javascript)
- 表杂乱无章的问题.Javascript HTML5.
- 我的代码有什么问题.JavaScript幻灯片
- 这段代码有什么问题?(JavaScript)
- 浏览器和移动设备的视差背景问题(javascript/jquery)
- Mozilla中的setInterval()问题(Javascript函数)
- While循环问题-JavaScript-jQuery.Clone()
- 检查密码匹配问题(JavaScript)
- 抓取选中单选按钮的问题- JavaScript
- 基于下拉选择禁用文本字段的问题(JavaScript)
- 比较日期问题- javascript
- 浏览器兼容性问题Javascript