Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中捕捉按钮点击而无需服务器交互_Javascript_Ajax - Fatal编程技术网

在javascript中捕捉按钮点击而无需服务器交互

在javascript中捕捉按钮点击而无需服务器交互,javascript,ajax,Javascript,Ajax,我有一个注册表单,要求用户输入他们的电子邮件和密码,它们都在两个单独的文本框中。我想提供一个用户可以单击的按钮,这样当用户单击按钮时,密码(被屏蔽)将出现在弹出窗口中 目前,我的JavaScript代码如下所示: function toggleShowPassword() { var button = $get('PASSWORD_TEXTBOX_ID'); var password; if (button)

我有一个注册表单,要求用户输入他们的电子邮件和密码,它们都在两个单独的文本框中。我想提供一个用户可以单击的按钮,这样当用户单击按钮时,密码(被屏蔽)将出现在弹出窗口中

目前,我的JavaScript代码如下所示:

    function toggleShowPassword() {       
        var button = $get('PASSWORD_TEXTBOX_ID');
        var password;
        if (button)
        {
            password = button.value;
            alert(password);
            button.value = password;  
        } 
   }
问题是,每次用户单击按钮时,Firefox和IE中的密码都会被清除。我希望他们能够以明文形式查看密码以进行验证,而无需重新键入密码

我的问题是:

  • 为什么每次单击按钮时密码字段都会被重置

  • 如何使密码字段在用户以明文形式看到其密码后不被清除


  • 我假设浏览器在试图设置密码字段的值时遇到了一些问题:

    button.value = password;
    
    这行代码没有真正的用途
    password.value
    在前面几行中不受影响,您在
    alert()
    中读取并使用该值

    这应该是代码的更简单版本:

    function toggleShowPassword() {       
        var button = $get('PASSWORD_TEXTBOX_ID');
        if (button)
        {
            alert(button.value);
        } 
    
    }


    编辑:事实上我刚刚做了一个快速测试,Firefox在设置密码字段的值时没有问题,比如
    button.value=“blah”
    。看来情况并非如此。。。我会检查您的ASP.NET代码是否如其他人所建议的那样导致回发。

    我会假设浏览器在试图设置密码字段值的脚本中存在一些问题:

    button.value = password;
    
    这行代码没有真正的用途
    password.value
    在前面几行中不受影响,您在
    alert()
    中读取并使用该值

    这应该是代码的更简单版本:

    function toggleShowPassword() {       
        var button = $get('PASSWORD_TEXTBOX_ID');
        if (button)
        {
            alert(button.value);
        } 
    
    }


    编辑:事实上我刚刚做了一个快速测试,Firefox在设置密码字段的值时没有问题,比如
    button.value=“blah”
    。看来情况并非如此。。。我将检查您的ASP.NET代码是否如其他人所建议的那样导致回发。

    您不需要执行
    button.value=password因为读取值不会改变它。我不知道为什么要清除它,可能JavaScript不允许修改密码字段值。

    您不需要执行
    按钮。value=password因为读取值不会改变它。我不知道为什么会被清除,可能JavaScript不允许修改密码字段值。

    听起来您每次单击都在向服务器发出请求,每次页面加载时重置密码框是浏览器的典型行为。

    听起来您每次单击都在向服务器发出请求,每次加载页面时都会重置密码框,这是浏览器的典型行为。

    您没有说您正在使用ASP.NET,但是

    根据设计,ASP.NET在回发期间清除模式为密码的TextBox控件的值。我使用以下代码在子类中解决此问题:

    // If the TextMode is "password", the Text property won't work if ( TextMode == System.Web.UI.WebControls.TextBoxMode.Password ) Attributes[ "value" ] = stringValue; //如果TextMode为“password”,则Text属性将不起作用 if(TextMode==System.Web.UI.WebControls.TextBoxMode.Password) 属性[“值”]=stringValue;
    你没有说你在使用ASP.NET,但是

    根据设计,ASP.NET在回发期间清除模式为密码的TextBox控件的值。我使用以下代码在子类中解决此问题:

    // If the TextMode is "password", the Text property won't work if ( TextMode == System.Web.UI.WebControls.TextBoxMode.Password ) Attributes[ "value" ] = stringValue; //如果TextMode为“password”,则Text属性将不起作用 if(TextMode==System.Web.UI.WebControls.TextBoxMode.Password) 属性[“值”]=stringValue;
    如果您不希望按钮提交表单,请确保它的类型为“button”而不是“submit”。例如,您可以执行以下操作:

    <input type="button" value="Show My Password" onclick="toggleShowPassword()"/>
    

    如果您不希望按钮提交表单,请确保它的类型为“button”而不是“submit”。例如,您可以执行以下操作:

    <input type="button" value="Show My Password" onclick="toggleShowPassword()"/>
    
    
    
    在HTML中:

    <input type="button" onclick="toggleShowPassword();">
    
    
    
    您需要使用“按钮”而不是“提交”来阻止表单发布。

    在HTML中:

    <input type="button" onclick="toggleShowPassword();">
    
    
    

    您需要使用“按钮”而不是“提交”来阻止表单发布。

    我做了一个工作版本的快速示例:

    <html>
        <head>
            <script type="text/javascript" src="prototype.js"></script>
            <script type="text/javascript">
                function toggleShowPassword() {       
                    var textBox = $('PasswordText');
                    if (textBox)
                    {
                        alert(textBox.value);  
                    } 
                }
            </script>
        </head>
        <body>
            <input type="password" id="PasswordText" /><input type="button" onclick="toggleShowPassword();" value="Show Password" />
        </body>
    </html>
    
    
    函数toggleShowPassword(){
    var textBox=$('PasswordText');
    如果(文本框)
    {
    警报(textBox.value);
    } 
    }
    

    关键是输入类型为button,而不是submit。我使用库按ID检索元素。

    我做了一个工作版本的快速示例:

    <html>
        <head>
            <script type="text/javascript" src="prototype.js"></script>
            <script type="text/javascript">
                function toggleShowPassword() {       
                    var textBox = $('PasswordText');
                    if (textBox)
                    {
                        alert(textBox.value);  
                    } 
                }
            </script>
        </head>
        <body>
            <input type="password" id="PasswordText" /><input type="button" onclick="toggleShowPassword();" value="Show Password" />
        </body>
    </html>
    
    
    函数toggleShowPassword(){
    var textBox=$('PasswordText');
    如果(文本框)
    {
    警报(textBox.value);
    } 
    }
    
    关键是输入类型为button,而不是submit。我使用库按ID检索元素。

    答案如下:

    我想出了解决办法。。。解决办法很简单

      OnClientClick="myOnClick()"
    

    这是完全更正的代码

    函数myOnClick(){ //执行其他一些操作。。。 返回false; } 无标题页 哈哈

    答案如下:

    我想出了解决办法。。。解决办法很简单

      OnClientClick="myOnClick()"
    

    这是完全更正的代码

    函数myOnClick(){ //执行其他一些操作。。。 返回false; } 无标题页