2

私はプロジェクトに取り組んでいます、状況は、クライアントが詳細を入力する必要があり、彼が詳細を入力した後、javaスクリプト(ダイアログの確認)を使用して、検証のためにすべての重要な詳細を表示し、[OK]を押すと、フォームが送信されます。

これは私が作ったものですが、機能していないようです...助けが必要です...

(キャンセルを押した後..ダイアログボックスが表示され続けます..そして最悪の部分は、キャンセルを選択した場合でも、最終的にフォームが送信されることです)

(私は他の詳細を削除しました...)

   <script type="text/javascript">
function validateMyForm()
{
    var X=confirm("ARE DETAILS CORRECT ??");
  if(!X)
  { 
    alert("validation failed false");
    returnToPreviousPage();
    return false;
  }
else
 {alert("validations passed");
  return true;}
}
</script>





<form name="frm" action=<?php print "new_update_attendence.php"; ?> method="POST"    
id="content" onsubmit="return validateMyForm();">
4

3 に答える 3

4

キャピタライゼーションは重要です!

var x=confirm("ARE DETAILS CORRECT ??");
if(!X) // change to if(!x)

あなたの質問の2番目の部分のために、あなたはすることができます:

<script type="text/javascript">
    function validateMyForm()
    {
        var X=confirm("ARE DETAILS CORRECT ??");
        if(!X)
        { 
            setTimeout((function(){ window.location.reload(); }), 500);
            return false;
        }
        else
        {
            return true;
        }
    }
</script>
于 2012-08-14T13:50:28.503 に答える
3

X小文字でなければなりません:

 if(!x)
  { ...
于 2012-08-14T13:50:16.423 に答える
1

過去にjQueryを使用したことがあると思います。jQueryではreturn false、フォームがまとめて送信されるのを防ぎます。これは、jQueryがその戻り値(false)をキャッチして変換するのeventObject.preventDefault(); eventObject.stopPropagation();に対しreturn false、jQueryがない場合は最初の値のみを実行するためです(そのイベントのデフォルトアクションを防止します)。イベントはまだバブル/伝播します。

HTMLをonsubmit="return validateMyForm(event);">に変更して、イベントオブジェクトにアクセスできるようにします。次に、JavaScriptで:

function validateMyForm(e)//e should hold the event
{
    e = e || window.event;//except for older IE versions(?), which we correct here
    //do whatever, if the form shouldn't be submitted:
    if (!confirm("ARE DETAILS CORRECT ??"))
    {
        if (e.preventDefault)
        {//chrome, FF, opera, ...
            e.preventDefault();
            e.stopPropagation();//<-- important line here
            return false;
        }//cruddy IE clients
        e.returnValue = false;
        e.cancelBubble = true;//<-- stop event in its tracks
        return false;
    }
}

それはそれをする必要があります。

于 2012-08-14T14:14:03.593 に答える