繁体   English   中英

实际上不向服务器提交任何内容的HTML表单(JavaScript中的客户端处理)

[英]HTML Form That Doesn't Actually Submit Anything To The Server (Client-Side Processing in JavaScript)

我有一个带有输入的HTML表单,它只能在JavaScript和jQuery中进行客户端处理,但实际上不会向服务器提交任何内容。 在HTML中编写这样一个表单并编写JavaScript的正确方法是什么,当表单的输入发生变化时(处理显式提交事件(即点击“提交”或输入)或隐式更改事件) (从输入中取消聚焦,甚至在输入文本的每次击键/点击时))?

如果您确实从未将表单提交到某个地方,则可以避免使用表单标记。 只需使用输入框和按钮。 然后,如果用户单击该按钮,则单击处理程序运行,或者根本不执行任何操作。

至于捕获显式事件,按钮单击,非聚焦(模糊)我会建议使用jQuery,因为它使得以跨浏览器方式将处理程序附加到这些事件变得非常容易。

首先通过在onsubmit中返回false或在事件处理程序中使用event.preventDefault()来阻止默认表单操作。

排队:

<form id="myform" onsubmit="return false" action="pleaseturnonjavascript.html">

更好:

window.onload=function() {
  document.getElementById("myform").onsubmit=function() {
    // do something with the form field
    return false; // old way
  }
}

使用preventDefault:

window.onload=function() {
  document.getElementById("myform").onsubmit=function(e) {
    e.preventDefault(); // first statement
    // do something with the form field
  }
}

或者jQuery:

$(function() {
  $("#myform").on("submit",function(e) {
    e.preventDefault(); // first statement
    // do something with the form field
  });
});

然后决定是否要使用onkeyup(我在数字字段中使用)或onblur(在完整值很重要时使用)

这可以使用普通的JavaScript或jQuery来完成,但我们需要更多信息来帮助您

我更喜欢使用form标签并传递表单对象而不是只有每个字段必须访问的输入字段而不是使用表单元素数组 - 我感到不高兴不将输入包装在表单标记中。 它甚至可能无法验证,并且额外的好处是输入将触发提交事件而无需其他措施。

您不需要表单标记。 您可以对每个元素使用attach函数,如下所示:

 $("#input-element-id").change(function(){
  //your code here
  });

或者你可以在它们周围包装一个包含DIV(或其他元素),并执行以下操作:

$("#containing-div-id").change(function() {
//your code here
});

只需在w3school网站http://www.w3schools.com/js/js_examples.asp上查看一些示例

你可以知道如何编写onclick,onmouseover事件

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM