8

タグの「onsubmit」でトリガーされる JavaScript コードによって送信されるフォームがあります。すべてのブラウザで正常に動作しますが、IE7/IE8 では動作しません。

私に何ができる?

<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">
  [...]
  <input type="submit" value="Go">
</form>
4

14 に答える 14

11

私はこれをつまむつもりです。フォームの送信を処理したい場合、それが送信の目的です。ユーザーがいずれかのフィールドで Enter キーを押すと、onclick ハンドラーは完全に回避されます。目立たない方法でこれを行う基本的な例を次に示します。

<form name="myform">
  <input type="submit" />
</form>
<script>
  document.myform.onsubmit = function(){
    alert('handled');
    return false;
  }
</script>

これは、同じ形式の jQuery を使用して、はるかに簡単にすることができます...

$("form[name=myform]").bind('submit',function(){
   alert('handled');
   return false;
});
于 2010-11-02T13:55:23.627 に答える
3

関数から返されたものの後に来るため、 return false に到達することはないと思います。

<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">

「submitmyform()」関数内で false を返すようにしてください。そうでない場合は、フォーム obsubmit イベントに true を返す可能性があります。

于 2012-07-16T18:06:54.707 に答える
2

これを試して。私のために働いてください。

onSubmit="javascript:false を返す"

于 2013-11-08T02:50:52.467 に答える
1

returnValue従来の IE でイベントをキャンセルするには、 に設定する必要がありますfalse。ただ戻るだけfalseではダメです。マイクロソフトがこのように実装した理由はわかりません。

function validateForm(evt) {
//  if form is not valid
    if(!condition) {
    //  if evt has preventDefault
        if(evt.preventDefault)
            { event.preventDefault(); }
    //  if evt has returnValue
        else if(evt.returnValue)
            { evt.returnValue = false; }
    //  fallback
        else
            { return false; }
    }
}

//  assume form is reference to your form
form.attachEvent('onsubmit',validateForm);
于 2013-10-18T12:03:12.463 に答える
0

私たちの解決策は、javascriptイベントをフォームの「onsubmit」から送信ボタンの「onclick」に移動することでした。

<form action="/dosomething.htm" method="GET">
  [...]
  <input type="submit" value="Go" onclick="submitmyform();return false">
</form>
于 2010-11-02T13:45:54.883 に答える
0
<form action="/dosomething.htm" method="GET" onsubmit="return submitmyform(this)">
     [...]
     <input type="submit" value="Go">
   </form>

これは正常に動作します...関数はtrueまたはfalseを返す必要があります

于 2013-09-22T12:31:34.077 に答える
0

同じエラーが発生し、コンソールの電源を入れたときに、まったく来ませんでした。だから私は、それがオフになっている限り、Internet Explorer によって認識されなかったのはコンソールであることがわかりました。次のコードを使用して、ダミーのコンソールをウィンドウに追加するだけです (まだ存在しない場合)。

var myconsole = {log : function(param){}}
window.console = window.console || myconsole;

これにより、Microsoft の JavaScript コンソールが必要な場合に問題が発生する可能性があります。次に、行をコメントアウトします。しかし今では、コンソール オブジェクトはサイト全体で未定義ではなくなりました。

于 2013-06-25T19:03:57.430 に答える
-1

実際には、あなたが書いたsubmitmyform();return falseものだけsubmitmyformが評価されます。

2 つのコマンドの場合は、次のように中括弧で囲む必要があります。

{submitmyform();return false;}

両方が評価されるように。

于 2012-07-24T09:15:35.017 に答える
-2

問題はfalseを返すことだと思いますが、'onsubmit'関数から返す必要があります

例を参照してください。

このフォームは、IE7/8でも送信されることはありません。

 <form action="acknowledgement.html" method="get" onsubmit="verify();">
        <input type="submit" name="submit"
         VALUE="Submit"> 
        </form>

<script language="javscript">
function verify(){

return false;
}
</script>

ダニー。

于 2010-11-02T13:48:30.650 に答える
-2

それは動作します-W3Scoolsの例を確認してください(から取得) http://www.w3schools.com/js/js_form_validation.asp

<html>
<head>
<script type="text/javascript">
function validate_required(field,alerttxt)
{
with (field)
  {
  if (value==null||value=="")
    {
    alert(alerttxt);return false;
    }
  else
    {
    return true;
    }
  }
}

function validate_form(thisform)
{
with (thisform)
  {
  if (validate_required(email,"Email must be filled out!")==false)
  {email.focus();return false;}
  }
}
</script>
</head>

<body>
<form action="submit.htm" onsubmit="return validate_form(this)" method="post">
Email: <input type="text" name="email" size="30">
<input type="submit" value="Submit">
</form>
</body>

</html>
于 2010-11-02T13:49:20.537 に答える
-2

IEを標準に準拠させたい場合は、宣言でどの標準に準拠するかを指定する必要があります。

1つがなければ、それをあなたが望むことをするようにさせることは終わりのない欲求不満になるでしょう。1つを使用すると、他のすべてのブラウザと同じように機能し始めるため、フラストレーションのほとんどが解消されます。

于 2012-04-08T12:20:49.230 に答える