Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 作为表单提交时没有错误,但作为函数提交时出错_Javascript_Html - Fatal编程技术网

Javascript 作为表单提交时没有错误,但作为函数提交时出错

Javascript 作为表单提交时没有错误,但作为函数提交时出错,javascript,html,Javascript,Html,我正在写一个表格,里面有两个按钮 其中一个是submit按钮,它检查表单中的所有字段,还有一个username字段,它不仅由表单的submit按钮检查,而且由单独的检查按钮检查 在用户名字段中,我必须想出一个具有以下特征的模式: 1.用户名必须介于8到12个字符之间 2.用户名必须由数字、字母(大写或小写)、点、破折号、下划线组成 3.用户名必须以字母开头 check按钮基于我自己编写的JavaScript函数工作 问题是: 当我输入“s_123asd”作为用户名时,“提交”按钮不会给我任何错误

我正在写一个表格,里面有两个按钮

其中一个是submit按钮,它检查表单中的所有字段,还有一个username字段,它不仅由表单的submit按钮检查,而且由单独的检查按钮检查

在用户名字段中,我必须想出一个具有以下特征的模式:

1.用户名必须介于8到12个字符之间

2.用户名必须由数字、字母(大写或小写)、点、破折号、下划线组成

3.用户名必须以字母开头

check按钮基于我自己编写的JavaScript函数工作

问题是:

当我输入“s_123asd”作为用户名时,“提交”按钮不会给我任何错误,但当我用“检查”按钮检查它时,我会得到模式不匹配错误

显然,我的函数有问题,因为该模式在regex101中运行良好

请帮忙

提前谢谢

代码如下:

<!DOCTYPE html>
<html>
<head>

<script>
function pattern() {
    var x = document.forms["regForm"]["uname"].value;
    if (x.pattern != "[a-zA-Z][a-zA-Z0-9\.\-_]{7,11}") {
        alert("pattern mismatch");
        return false;
    }
}
</script>

</head>
<body>
<form name="regForm" action="/action_page.php" onsubmit="return validateForm()" method="post">

username: <input type="text" name="uname" pattern="[a-zA-Z][a-zA-Z0-9\.\-_]{7,11}" id="uname">
<button type="button" onclick="pattern()">check</button><br>
<br><br>
<input type="submit" value="Submit">
</form>
</body>
</html>

函数模式(){
var x=document.forms[“regForm”][“uname”].value;
如果(x.pattern!=“a-zA-Z][a-zA-Z0-9\.\-\\\\\{7,11}”){
警报(“模式不匹配”);
返回false;
}
}
用户名:
检查


尝试使用
test()
test()
方法测试参数中指定的字符串是否匹配。 如果该方法找到匹配项,则返回true,否则返回false

请尝试以下方法:

函数模式(){
var x=document.forms[“regForm”][“uname”].value;
var patt=/[a-zA-Z][a-zA-Z0-9\.-{7,11}/;
如果(!patt.test(x)){//请注意使用!来否定测试结果
警报(“模式不匹配”);
返回false;
}
}

用户名:
检查



这是因为在HTML中,您忘记重命名函数,以便在提交时从validateForm()调用pattern()。当我把它从

onsubmit="return validateForm()"


检查

这对我来说很好!当我输入您提供的用户名时,它给出了一个错误!在您自己的
pattern()
函数中,您不运行正则表达式,只需比较两个字符串。我还注意到,您没有接受您的问题的任何答案,而且几乎没有投票。难道你不知道你应该这么做吗?
onsubmit="return pattern()"