タグの「onsubmit」でトリガーされる JavaScript コードによって送信されるフォームがあります。すべてのブラウザで正常に動作しますが、IE7/IE8 では動作しません。
私に何ができる?
<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">
[...]
<input type="submit" value="Go">
</form>
タグの「onsubmit」でトリガーされる JavaScript コードによって送信されるフォームがあります。すべてのブラウザで正常に動作しますが、IE7/IE8 では動作しません。
私に何ができる?
<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">
[...]
<input type="submit" value="Go">
</form>
私はこれをつまむつもりです。フォームの送信を処理したい場合、それが送信の目的です。ユーザーがいずれかのフィールドで 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;
});
関数から返されたものの後に来るため、 return false に到達することはないと思います。
<form action="/dosomething.htm" method="GET" onsubmit="submitmyform();return false">
「submitmyform()」関数内で false を返すようにしてください。そうでない場合は、フォーム obsubmit イベントに true を返す可能性があります。
これを試して。私のために働いてください。
onSubmit="javascript:false を返す"
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);
私たちの解決策は、javascriptイベントをフォームの「onsubmit」から送信ボタンの「onclick」に移動することでした。
<form action="/dosomething.htm" method="GET">
[...]
<input type="submit" value="Go" onclick="submitmyform();return false">
</form>
<form action="/dosomething.htm" method="GET" onsubmit="return submitmyform(this)">
[...]
<input type="submit" value="Go">
</form>
これは正常に動作します...関数はtrueまたはfalseを返す必要があります
同じエラーが発生し、コンソールの電源を入れたときに、まったく来ませんでした。だから私は、それがオフになっている限り、Internet Explorer によって認識されなかったのはコンソールであることがわかりました。次のコードを使用して、ダミーのコンソールをウィンドウに追加するだけです (まだ存在しない場合)。
var myconsole = {log : function(param){}}
window.console = window.console || myconsole;
これにより、Microsoft の JavaScript コンソールが必要な場合に問題が発生する可能性があります。次に、行をコメントアウトします。しかし今では、コンソール オブジェクトはサイト全体で未定義ではなくなりました。
実際には、あなたが書いたsubmitmyform();return false
ものだけsubmitmyform
が評価されます。
2 つのコマンドの場合は、次のように中括弧で囲む必要があります。
{submitmyform();return false;}
両方が評価されるように。
問題は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>
ダニー。
それは動作します-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>
IEを標準に準拠させたい場合は、宣言でどの標準に準拠するかを指定する必要があります。
1つがなければ、それをあなたが望むことをするようにさせることは終わりのない欲求不満になるでしょう。1つを使用すると、他のすべてのブラウザと同じように機能し始めるため、フラストレーションのほとんどが解消されます。