Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/452.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 API Fetch ES6中的寄存器函数_Javascript_Html_Forms_Authentication - Fatal编程技术网

Javascript API Fetch ES6中的寄存器函数

Javascript API Fetch ES6中的寄存器函数,javascript,html,forms,authentication,Javascript,Html,Forms,Authentication,我有一个带有注册功能的弹出模式。问题是,尽管字段尚未完全填写或存在错误,但在我单击“注册”按钮后,它会关闭弹出窗口。我已经在输入元素中输入了“required”,但它什么也不做。我的代码有问题吗。我正在尝试从网站获取api注册 函数注册器(事件){ console.log(事件) event.preventDefault(); console.log(document.forms[0].checkValidity()); 取('http://sample_website.com/api/reg

我有一个带有注册功能的弹出模式。问题是,尽管字段尚未完全填写或存在错误,但在我单击“注册”按钮后,它会关闭弹出窗口。我已经在输入元素中输入了“required”,但它什么也不做。我的代码有问题吗。我正在尝试从网站获取api注册

函数注册器(事件){
console.log(事件)
event.preventDefault();
console.log(document.forms[0].checkValidity());
取('http://sample_website.com/api/register', {
方法:“POST”,
标题:{'Content-Type':'application/json'},
正文:JSON.stringify({
给定名称:document.getElementById(“给定名称”).value,
姓氏:document.getElementById(“姓氏”).value,
电子邮件:document.getElementById(“电子邮件”).value,
密码:document.getElementById(“密码”).value,
密码确认:document.getElementById(“确认密码”).value
})
})
.then(data=>data.json())
.然后(数据=>{
控制台日志(数据);
if(data.response){
警报(“成功注册”);
}否则{
警报(“对不起,电子邮件已被占用。”);
} 
})
.catch((错误)=>{
警报(“这是一条警告消息!”);
控制台错误(err);
})
}
window.onload=函数(){
文件格式[0]
.addEventListener(“提交”,注册者)
}

&时代;
现在注册
姓名
姓
电子邮件
密码
确认密码
登记
fetch()
和JavaScript通常与问题中描述的问题无关

问题在于,在问题的HTML中,
是有效的

因此,
将在
单击
元素提交

您已将
属性设置为非空的有效字符串。在
元素中没有
模式
属性可将
RegExp
有效模式设置为现有
属性以外的值

占位符
替换为
属性或包含
模式
属性以反映默认值
不应有效


函数注册器(){
console.log(document.forms[0].checkValidity())
}
&时代;
现在注册
姓名
姓
电子邮件
密码
确认密码
登记

可能是因为
registerUser
不返回任何内容,因此任何调用它的代码都不知道何时“完成”——显示registerUser的使用方式,因为该函数中没有任何内容会关闭任何弹出窗口,所以问题显然存在elsewhere@JaromandaX. 是的。等等,我会把输入元素“it does”。。。什么是
it
,它做什么?(像《幼儿园警察》中的阿尼那样说以获得最大效果)你是说,
registerUser
返回一些东西吗?是,它返回未定义的
。。。你说我将放置输入元素-这如何帮助你显示弹出窗口的显示方式和关闭方式?您所展示的代码中没有一个能做到这一点,这可能对您的问题非常重要哦,对了,所以从单击事件调用registerUser,我认为它
data dislose=“modal”
意味着当您单击此按钮时,其他地方的一些代码也会关闭模式-这就是您的问题所在problem@JaromandaX. 谢谢你的建议。那么onclick现在不使用了?onclick不适合使用,对吗?@Joseph注意,当HTML
正确填充后,
仍将提交,重新加载
文档,因为您没有阻止
表单
提交的默认操作。使用
.addEventListener()
onsubmit
捕获提交事件,调用
event.preventDefault()
然后调用
fetch()
你说,onclick现在不常用吗?您能帮助我使用.addeventListener或onsubmit和event.preventDefault()编辑代码吗。请并感谢您。@Joseph您可以在HTML中删除属性事件处理程序,使用
onsubmit
.addEventListener()
在事件处理程序
函数注册器(事件){event.preventDefault();//do fetch stuff}中调用
event.preventDefault()
;document.forms[0].addEventListener(“submit”,registerUser)
@Joseph先前链接的JSFIDLE调用
.text()
,转换
FormData
实例键,将值对传递给对象,然后传递给
JSON.stringify()
,然后调用
.JSON()
。所有这些都可以替换为您自己的代码,或者只需将
传递到
FormData()
并在
body
中设置
FormData
实例。jsfiddle将演示
事件
默认操作被阻止,并且数据是
POST
ed