0

私は JavaScript で奇妙な問題に直面しています。私は ajax データベースに取り組んでいます。データベースのログイン フォームは、ajax 要求/関数を使用してデータを PHP コントローラーに送信します。ログインページにエラー表示器の非表示の div (errorDiv という名前) があります。errorDiv html は次のとおりです。

<div id="errorDiv" style="visibility:hidden; display:none">
...
</div>

ログイン フォームのユーザー名とパスワードの両方のフィールドが空のままの場合、PHP コントローラーが応答してログイン フォームを表示し、JavaScript 関数「DisplayLoginError()」を実行する必要があります。これにより、エラー div が表示され、エラー メッセージが表示されます(両方のフィールドに入力してください) error-div.DisplayLoginError() 関数のコードは次のとおりです。

function DisplayLoginError()
{
document.getElementById('errorDiv').style.visibility="visible";
document.getElementById('errorDiv').style.display="block";
document.getElementById('errorDiv').innerHTML = "<?php echo $loginerror; ?>";
}

PHP コントローラーのコードは次のとおりです。

if(isset($_REQUEST['login']))
{
if(isset($_REQUEST['username']) && isset($_REQUEST['password']))
    {
    .....Both the fields are filled...
    }
else   /*===Error:Any of the username or password field has  been left empty====*/
    {
    $loginerror='Please fill both the Fields to login.';
    include $_SERVER['DOCUMENT_ROOT'].'\hospital\includes\collegedata\login-form.html.php';
    }
}

問題は、ほとんどの JavaScript イベントがユーザー アクションによってトリガーされるため、実行できないことです。当分の間、フォームタグにマウスオーバーイベントを割り当てました。これは、トリガーされると DisplayLoginError 関数を実行し、errorDiv にエラーを表示します。

<form onmouseover="DisplayLoginError()"> ..... </form>

しかし、それは適切な解決策ではありません。ページ全体ではなくログイン div のみをロードしながら、この関数を実行できるイベントが必要です。ここでは、メイン ページがまだ div の変更のみである ajax データベースであるため、onload イベントを使用できません。この目的でイベントを使用できるようになるかもしれません...よくわかりません...もっと良い解決策があるかもしれません...どうすればajaxでそれを行うことができますか?

4

1 に答える 1

1

javascriptでフォーカス喪失イベントを使用できます。あなたの質問を明確に理解できません。したがって、これは単なる提案です。

<div id='errorDiv' >
</div>
Username : <input type="text" name="username" id="uname" onBlur="checkUsername();">
Password : <input type="text" name="password" id="pword" onBlur="checkValues();">

<script type="text/javascript">
function checkValues()
{
    uname = document.getElementById('uname').value;
    pword = document.getElementById('pword').value;
    if(uname=="" || pword=="") {
        document.getElementById('errorDiv').innerHTML="Please fill both the fields";
    }else{
        document.getElementById('errorDiv').innerHTML="";
    }
}
function checkUsername()
{
    uname = document.getElementById('uname').value;
    if(uname==""){
        document.getElementById('errorDiv').innerHTML="Please enter username";
    }else{
        document.getElementById('errorDiv').innerHTML="";
    }
}
</script>
于 2012-04-18T10:54:56.123 に答える