为什么要点击两次按钮才会执行 javascript的代码?

b2bsoho 2011-05-03 12:18:27



<head runat="server">
<title>无标题页</title>
<script type="text/javascript">
function reload()
{
window.top.frames["NavigetionFrame"].location.reload();
//window.navigator ("Default.aspx");
}

</script>
</head>
<body>
....


public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblError.Text = "";
}
protected void btnLogin_Click(object sender, EventArgs e)
{

if (comFun.userLogin(model))
{
Session["UserName"] = userName;
Session.Timeout = 60;
lblError.Text = "登录成功";
this.btnLogin.Attributes.Add("onclick", "return reload();");//这里
}
else
{
lblError.Text = "用户名或密码错误!";
}

}

}


以上的代码里 为什么要点击两次按钮 btnLogin 才会执行 javascript的代码?

和ispostback有关系 吗?该怎么改?



...全文
581 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
大叔手残勿喷 2021-06-24
  • 打赏
  • 举报
回复

因为你长的好看,所以按两次才能有效

 

doStatis : function () {
    var me=this;
       var kssj = new Date();
                if (this.dateFieldStart) {
                    kssj = this.dateFieldStart.getValue();
                };
        var jssj = new Date();
                if (this.dateFieldEnd) {
                    jssj = this.dateFieldEnd.getValue();
                };
        phis.script.rmi.jsonRequest({
            serviceId : 'phis.'+this.serviceId,
            serviceAction : "statis",
            body:{
              startDate: kssj.format('Y-m-d')+' '+'00:00:00',
              endDate: jssj.format('Y-m-d')+' '+'23:59:59'
            }
            }, function(code, msg, json) {
             console.warn(json);
                Ext.apply(me,{
                data: json.body
                });
                console.warn(this.grid);
                
                
        }, this) ;
    
    
    
     
            
     


 
        var a="10210";
        var jsonstore = new Ext.data.JsonStore({
                data: me.data,
                fields: [
                    'SJSL',
                    'ZHJE',
                    'ZJJE',
                    'ZFJE',
                    'QTYS',
                    'HBWC',
                    { name: 'startDate', type: 'date', dateformat:('Y-m-d')+' '+'00:00:00'},
                    { name: 'endtDate', type: 'date', dateformat:('Y-m-d')+' '+'23:59:59'}
                ]        
        });
 
        //定义列
        var column = new Ext.grid.ColumnModel({
            columns: [
                {header: '收费次数', dataIndex: 'SJSL',width:80 },
                { header: '总帐户金额', dataIndex: 'ZHJE',width:100 },
                 { header: '总计金额', dataIndex: 'ZJJE',width:85 },
                { header: '总自费金额', dataIndex: 'ZFJE',width:100 },
                { header: '总其他应收(医保)', dataIndex: 'QTYS',width:140 },
                { header: '总货币误差', dataIndex: 'HBWC' ,width:100},
                { header: '收费日期(开始)', dataIndex: 'startDate', renderer: Ext.util.Format.dateRenderer('Y-m-d') ,width:160},
                { header: '收费日期(结束)', dataIndex: 'endtDate', renderer: Ext.util.Format.dateRenderer('Y-m-d') ,width:160}
            ]
       });
       //列表
             var grid = new Ext.grid.GridPanel({
                     height: 470,
                    store: jsonstore,  
                    colModel: column,
                  tbar: [{
                      pressed: true,
                       enableToggle: true,
                  text: '打印',
                   id: 'print',
                   iconCls: 'print',
                  handler: function () { }
                    }],
                  
                 });
                 this.grid=grid;
        //表单
             var form = new Ext.form.FormPanel({
                     frame: true,
                      fileUpload: true,
                     url: '',
                      title: '门诊收费结算汇总',
                      style: 'margin:6px',
                      items: [grid],
                     
                   });


        var win=new Ext.Window(
            {
                title:"结算统计",
                width:990,
                height:600, 
                 minimizable:true, // 最大化
                maximizable:true, // 最小化
                frame:true,
                constrain:true, // 防止窗口超出浏览器窗口,保证不会越过浏览器边界
                buttonAlign:"center", // 按钮显示的位置 
                plain:true,// 将窗口变为半透明状态。,
                closeAction : 'close',//这里写成 'hide'
                items: form
          
            }
            
        );
        win.show();
     
    },
 

子夜__ 2011-05-03
  • 打赏
  • 举报
回复

protected void Page_Load(object sender, EventArgs e)
{
lblError.Text = "";
this.btnLogin.Attributes.Add("onclick", "return reload();");
}

这样看看
  • 打赏
  • 举报
回复
嗯哈楼上都说了
你在页面加载时就给按钮搞上这个属性就OK了
V-Far 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xuexiaodong2009 的回复:]
第一次没有绑定onclick,在点击后才绑定了onclick
应该在Page_Load中绑定
protected void Page_Load(object sender, EventArgs e)
{
lblError.Text = "";
this.btnLogin.Attributes.Add("onclick", "return reload();");
}
……
[/Quote]对的.因为你点击第一次的时候.才绑定onclick属性.所以点击第二次的时候才会出发reload
xuexiaodong2009 2011-05-03
  • 打赏
  • 举报
回复

第一次没有绑定onclick,在点击后才绑定了onclick
应该在Page_Load中绑定
protected void Page_Load(object sender, EventArgs e)
{
lblError.Text = "";
this.btnLogin.Attributes.Add("onclick", "return reload();");
}
Jack2013tong 2011-05-03
  • 打赏
  • 举报
回复
对,事件属性放在page_load里比较好
蛤十一 2011-05-03
  • 打赏
  • 举报
回复
你只有触发一次button_Click事件,this.btnLogin.Attributes.Add("onclick", "return reload();");这条语句才会执行,再次触发button_Click事件时,JavaScript的代码才会执行。
#blackheart 2011-05-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 todayclock 的回复:]

点击两次就对了
this.btnLogin.Attributes.Add("onclick", "return reload();");//这里
不应该把他放到Onclick方法中,放到Page_Load或者其他的地方都可以
[/Quote]
++
todayclock 2011-05-03
  • 打赏
  • 举报
回复
点击两次就对了
this.btnLogin.Attributes.Add("onclick", "return reload();");//这里
不应该把他放到Onclick方法中,放到Page_Load或者其他的地方都可以
ltcszk 2011-05-03
  • 打赏
  • 举报
回复
reload()这是什么方法?
师太请留步 2011-05-03
  • 打赏
  • 举报
回复
这是因为你在页面加载时没有给你的button赋js的方法,在点击第一次后才会执行你的单击事件然后绑定js方法,你再次单击时才真正执行了js的方法, this.btnLogin.Attributes.Add("onclick", "return reload();");//这句话应该写在pageload事件中
b2bsoho 2011-05-03
  • 打赏
  • 举报
回复
谢谢楼上各位,已解决这个问题,
但是 在linkbutton也是同理吗?


我现一个linkbutton(注销)也出现同样的情况:


protected void Page_Load(object sender, EventArgs e)
{
this.lbtnLogOut.Attributes.Add("onclick", "return reload();");



   protected void lbtnLogOut_Click(object sender, EventArgs e)
{
Session["UserName"] = null;

}


试了几次不行,要点10几次linkbutton才可以实现 退出!

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧