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

 }
 </script>
 </html>

action属性のURLの代わりに、この同じWebページ内の関数(スクリプトタグ内)にフォームの値を渡す方法(または他の代替方法)はありますか?

4

2 に答える 2

1

これが私が何年もの間それをした方法です。これはすべてのブラウザで機能します。非常に古いブラウザの場合、フォームタグにname = "form1"を追加すると、document.getElementById( "form1")をdocument.form1に変更することもできます。

注:jQueryが登場する前は、多くの場所で次のようなeventListenersを使用することをお勧めしていました。

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

しかし、私は個人的にjQueryまたはより単純なonsubmitのいずれかを好みます...

<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>

インラインでなければならない場合は、強くお勧めします

<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>
于 2012-12-27T16:05:33.697 に答える
0

html

<form  id="frm">    
<input type="button" onclick="fn()" value="Submit to function"/>
</form>

javascript

function fn(){
var frm = document.getElementById("frm");
var elements = frm.elements;
var len = elements.length;
// do something with elements
 for(var i =0; i < len; i++){
  console.log("%s = %s", elements[i].name, elements[i].value);
 }
}
于 2012-12-27T15:44:24.443 に答える