Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.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,我有一个html表单,其中action=script.php发送数据 我想阻止表单与JS一起发送,但它什么也不做,只发送数据。 纳斯洛夫=头衔 This is html: 这是JS: <script type="text/javascript"> document.getElementById("slanje").onclick = function (event) { var slanjeForme=true; var poljeTitle=

我有一个html表单,其中action=script.php发送数据

我想阻止表单与JS一起发送,但它什么也不做,只发送数据。 纳斯洛夫=头衔

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>