Javascript 我们可以将表单元素值传递给同一网页中的函数吗? ……任何形式要素。。。。。。 函数fn(){ }

Javascript 我们可以将表单元素值传递给同一网页中的函数吗? ……任何形式要素。。。。。。 函数fn(){ },javascript,html,forms,Javascript,Html,Forms,除了action属性中的URL,是否有一种方法(或任何其他替代方法)将表单值传递给同一网页中的函数(在脚本标记内)?

除了action属性中的URL,是否有一种方法(或任何其他替代方法)将表单值传递给同一网页中的函数(在脚本标记内)?

 <html>
 <body>
 <form action="">
   ......any form elements......
 </form>
 </body>
 <script>
 function fn() {

 }
 </script>
 </html>

javascript

<form  id="frm">    
<input type="button" onclick="fn()" value="Submit to function"/>
</form>
函数fn(){
var frm=document.getElementById(“frm”);
var元素=frm元素;
var len=elements.length;
//用元素做一些事情
对于(变量i=0;i
以下是我多年来的做法。它适用于所有浏览器-对于非常旧的浏览器,如果在表单标记中添加name=“form1”,甚至可以将document.getElementById(“form1”)更改为document.form1

注意:在jQuery之前,许多地方都推荐使用这种方法,例如

但我个人更喜欢jQuery或更简单的onsubmit

document.getElementById("form1").addEventListener("submit",
  function(e) {
    e.preventDefault(); 
    ... some code 
  }); 

window.onload=function(){
document.getElementById(“form1”).onsubmit=function(){
var val1=this.field1.value;
如果(val1==“”){
警报(“字段1不能为空”);
this.field1.focus();
返回false;
}
//返回true提交,返回false保留在页面上。
返回true;
}
}
.
.
.
如果它必须是内联的,那么我强烈建议

<html>
<head>
<script>
window.onload=function() {
  document.getElementById("form1").onsubmit=function() {
    var val1 = this.field1.value;
    if (val1=="") {
      alert('Field1 cannot be empty');
      this.field1.focus();
      return false;
    }
    // return true to submit, return false to stay on the page.
    return true; 
  }
}
</script>
</head>
<body>
<form id="form1" action="">
  <input type="text" name="field1" value="" />
  .
  .
  .
</form>
</body>
</html>

函数验证(表单){
var val1=form.field1.value;
.
.
返回false;//取消
.
.
返回true;//允许提交
}
更新

<head>
<script>
function validate(theForm) {
  var val1 = theForm.field1.value;
  .
  .
    return false;// cancel
  .
  .
  return true; // allow submit
}
</script>
</head>

<form onsubmit="return validate(this)">
只需更改页面上的一些span或div,请执行以下操作:
window.onload=function(){
document.getElementById(“form1”).onsubmit=function(){
var val1=this.field1.value;
document.getElementById(“div1”).innerHTML=“这是值”+val1;
return false;//不提交/刷新页面
}
}

您可以使用表单的onsubmit事件来使用自定义javascript处理所需内容。我会将
frm.elements.length
保存到一个临时变量,因为现在,您正在构建表单元素的数组,然后获取数组的长度,对于循环的每个迭代。如果传递this.form,则不需要在内联指定的函数中使用document.getElementById。您仍然可以在frm.elements中使用表单访问。谢谢。实际上,我正在向函数发送文本值,并使用document.getElementById(“”.innerHTML而不是console.log在同一页面上打印它。打印该值,但页面立即刷新并变为空白。有没有立即的解决方案?是的,看看我的建议。您需要从处理程序返回false才能停留在页面上!谢谢成功了!但我也尝试了使用button(onClick)而不是Submit and return false的另一组代码,但这不起作用。有什么想法吗?如果你想要最佳实践,我会提到
addEventListener
/
attachEvent
,而不是那些内联事件监听器。@Cerbrus谢谢。完成。由于跨浏览器问题,我本人从未使用过它们。相反,我只使用jQuery,完全跳过了addEventListener时代;)
<head>
<script>
function validate(theForm) {
  var val1 = theForm.field1.value;
  .
  .
    return false;// cancel
  .
  .
  return true; // allow submit
}
</script>
</head>

<form onsubmit="return validate(this)">
to just change some span or div on the page do this:

<html>
<head>
<script>
window.onload=function() {
  document.getElementById("form1").onsubmit=function() {
    var val1 = this.field1.value;
    document.getElementById("div1").innerHTML="This is the value "+val1;
    return false; // do not submit/refresh the page
  }
}
</script>
</head>
<body>
<form id="form1" action="">
  <input type="text" name="field1" value="" />
  <input type="submit" />
</form>
<div id="div1"></div>
</body>
</html>