如何使用document.getElementById

时间:2011-03-24 07:46:39

标签: javascript jquery

在我的JSP页面中,我有一个登录表单,其中两个文本框的名称和id为“u”表示用户名,“p”表示密码。我将值视为

var user = document.getElementById(“u”)。value;

var pass = document.getElementById(“p”)。value;

当应用程序的第一个用户尝试以user1身份登录并以pass1身份传递时。该值传递给admin.java,它使用request.getParameter获取值。

这一切都很好。第一个用户注销后。另一个用户尝试使用认证用户再次登录为user2,并传递为pass2,问题是变量用户并传入index.jsp保留相同的旧值user1和pass1。我通过警报框检查了这些。相同的值将传递给Admin.java。

index.jsp中的代码是

    function prepareLoginDialog(){
    $dialog = $('<div></div>')
    .html('<div id="dialog-confirm" title="Enter the login details here :">'+
        'User: <input type="text" id="u" name="u" ></input><br />'+
        'Pass: <input type="password" id="p" name="p" ></input>'+
        '</div>')

        //System.out.println(user);
    //System.out.println(pass);
    .dialog({
        autoOpen: false,
        modal: true,
        title: 'Login',
        buttons: {
            'Login': function() {
                //Send Login Request to Server
                alert("I in login");

                var user = document.getElementById("u").value;
                var pass = document.getElementById("p").value;
                alert(user);
                alert(pass);
                //System.out.println(u.text);
                login(user,pass);

                $(this).dialog('close');
            },
            Cancel: function() {
                $(this).dialog('close');
            }
        }
    });

    $('#login').click(function() {
        $dialog.dialog('open');
        // prevent the default action, e.g., following a link
        return false;
    });
}

为什么两个变量中没有采用新值?我哪里出错?

2 个答案:

答案 0 :(得分:3)

我认为您的问题与我在此提及的问题相同:Variables doesnt refresh after AJAX request completed

基本上,如果每次都重新创建对话框,那么您也在重新创建ID。这意味着它们不再是唯一的,可能会导致脚本出现问题。尝试在对话框脚本中添加close函数,如下所示:

.dialog({
    autoOpen: false,
    modal: true,
    title: 'Login',
    buttons: {
        'Login': function() {
            //Send Login Request to Server
            alert("I in login");

            var user = document.getElementById("u").value;
            var pass = document.getElementById("p").value;
            alert(user);
            alert(pass);
            //System.out.println(u.text);
            login(user,pass);

            $(this).dialog('close');
        },
        Cancel: function() {
            $(this).dialog('close');
        }
    },
    close: function() { $dialog.remove(); } //$(this).remove(); Might also work.
});

这会在DOM关闭时从DOM中删除对话框。

从我的另一篇文章:
您还可以选择将对话框保存在全局变量中,然后检查它是否已定义。如果它没有做你正在做的事情。如果有,设置一个变量告诉它你正在编辑的项目的ID是什么,并在运行.dialog(“open”)之前将所有文本框重置为空白;试。

答案 1 :(得分:0)

单独在你的盒子里会发生吗?为什么不检查清除临时文件和cookie并尝试一下。