防止使用JavaScript发送表单
我有一个html表单,其中action=script.php发送数据 我想阻止表单与JS一起发送,但它什么也不做,只发送数据。 纳斯洛夫=头衔防止使用JavaScript发送表单,javascript,html,Javascript,Html,我有一个html表单,其中action=script.php发送数据 我想阻止表单与JS一起发送,但它什么也不做,只发送数据。 纳斯洛夫=头衔 This is html: 这是JS: <script type="text/javascript"> document.getElementById("slanje").onclick = function (event) { var slanjeForme=true; var poljeTitle=
This is html:
这是JS:
<script type="text/javascript">
document.getElementById("slanje").onclick = function (event) {
var slanjeForme=true;
var poljeTitle=document.getElementById("naslov");
var naslov=document.getElementById("naslov").value;
if (naslov.lenght < 5 || naslov.lenght > 30) {
slanjeForme=false;
poljeTitle.style.border="1px dashed red";
document.getElementById("porukaTitle").innerHTML="Naslov vjesti mora imati između 5 i 30 znakova!<br>";
} else {
poljeTitle.style.border="1px solid green";
document.getElementById( "porukaTitle").innerHTML="";
}
if (slanjeForme != true) {
event.preventDefault();
}
}
</script>
问题是它总是发送数据。阻止表单提交的最佳方法是挂接到表单的提交事件中,并在javascript中这样做,而不是将javascript添加到html中。看起来是这样的: var form=document.querySelector'form.myform'; form.addEventListener'submit',e=>{ //把你的条件放在这里 如果请不要提交==正确{ e、 防止违约; } //否则将提交表格; };
您应该改用表单验证函数。在表单中,添加一个名为onsubmit的属性。表单应类似于以下内容:
<form onsubmit="return checkBeforeSubmitting()"></form>
然后,可以在发送数据之前运行函数。如果您不希望发送数据,请在特定条件下使checkbeforeprimitingreturn为false
链接到有关如何使用此功能的更多信息:
不要使用click处理程序,而是使用表单的submit事件处理程序!
创建一个漂亮的可重用验证函数,该函数还将使用
用所需的验证器填充验证函数
最后使用CSS来处理错误边界和消息可见性,使用类is error
始终将错误范围元素作为所需操作元素的同级元素放置,这样当输入获得错误时,我们可以使用CSS的
无论有多少输入,都不需要编写额外的JS逻辑。只需验证所需的值,如const has_err=validateELfoo,length
const validate=el,validatorName=length=>{
const val=el.value.trim;
常数={
//基本,验证是否有值
长度:=>val.length<1,
//验证5到30个字符
长度5|u 30:=>val.length<5|val.length>30,
//添加更多验证器
}[姓名];
el.classList.toggleis-error,ISER;
回程器;
};
const EL=sel,EL=>EL | | document.querySelectorsel;
ELmy_form.addEventListenersubmit,functionevent{
const err_1=validateELnaslov,长度_5_30;
const erru 2=验证ELBLA,长度;
如果错误1 | |错误2{
违约事件;
}
};
是错误吗{
轮廓:1px红色虚线;
}
表单。错误消息{
显示:无;
颜色:红色;
}
form.is error~。错误消息{
显示:块;
}
纳斯洛夫
Naslov vjesti mora imati između 5 i 30 znakova!
布拉布拉
我不知道该怎么办!
波沙尔吉
哪一个元素有id slanje?您在表单之前还是之后有脚本?之后,提交id=slanje我不知道这是打字错误还是您的实际问题原因,但缩进代码时,我注意到缺少div结束标记。不要在提交按钮上使用单击事件。在表单上使用.submit事件,在表单提交事件上使用event.prevent默认值,而不是表单中按钮上的click事件这里至少有一些相关信息,naslov.lenght应该是naslov.length是的,你的意思是W3woulds你应该遗憾的是,到目前为止,还是应该将w3schools放在浏览器的忽略列表中。你是不是因为你的答案更成熟而对我的答案投了反对票?你的回答很好,但我的也没什么问题。请不要这样滥用否决权机制。或者,如果你认为它有问题,至少告诉我,这样我就可以解决它。不是司机,而是看看你发布的内容:你的答案似乎还可以,但是,这个现场片段没有多大用处。此外,从函数中修复用户输入是非常奇怪的,而不是不必要地设置okToSubmit=true;这算不上什么好处。另外,请不要提交未定义的内容。。。这显然是一个例子,但对于新手开发人员来说,在哪里定义它可能是一个相当大的任务?如何处理?另外,您假定//否则表单将提交;所以代码可以放在这里,我想。。。但是您没有提前返回返回e.target.submit;退出该功能并防止由于您已手动提交表单而导致的其他无用操作。
<form onsubmit="return checkBeforeSubmitting()"></form>