我来做百科(第八天)

简介:
今天先来解决一下昨天留下的问题。
首先是“ 只能提交一次的按钮 ”,在ff中 history.back()后按钮仍然是disabled状态。这个问了很久都没有答案,于是自己试啊试,发现在ff中history.back(),页面不会执行onload,即停留在最后提交的状态,而ie会在history.back()后执行onload,但这是浏览器的问题,估计也没办法。垂死挣扎,正要放弃之际,突然发现成功了,立即看看是哪里问题。最好发现,如果在页面中写一个onunload的函数,即使是空的,只要不是null,那么ff在history.back()之后就会执行onload。太好了!虽然是误打误撞,也不知道为什么,反正是解决了,于是修改如下:
     /// <summary>
    
/// 只能提交一次的按钮
    
/// </summary>

     public   class  ButtonSubmitOnce : Button
    
{
        
private string _textonclick = "处理中,请稍后。。。";
        
private string _clientcheck;

        
protected override void Render(HtmlTextWriter writer)
        
{
            StringBuilder temp 
= new StringBuilder();

            temp.Append(
this.OnClientClick);

            
if (!string.IsNullOrEmpty(_clientcheck)) temp.Append("if(!").Append(_clientcheck).Append(") return false;");

            
if (!string.IsNullOrEmpty(_textonclick)) temp.Append("this.value=\"").Append(_textonclick).Append("\";");

            
//this is for the ff
            temp.Append("if(null==window.onunload) window.onunload = function(){};");

            temp.Append(
"this.disabled = true;").Append(Page.GetPostBackEventReference(this));

            
this.OnClientClick = temp.ToString();

            
base.Render(writer);
        }


        
public string TextOnClick
        
{
            
set { _textonclick = value; }
        }


        
public string ClientCheck
        
{
            
set { _clientcheck = value; }
        }

    }
测试也通过,太好了,先解决了一个问题。
接下来是多个提交按钮时设置默认提交按钮的问题。baidu了一下,发现用DefaultButton可以设置默认提交按钮。于是使用并查看代码,发现ms是用一个WebForm_FireDefaultButton这样的js来修改默认提交按钮的。又baidu一下,发现可以直接在客户端调用这个函数,先试一下,真的可以。于是修改“能定义默认提交按钮的TextBox”如下:
 
     /// <summary>
    
/// 能定义默认提交按钮的TextBox
    
/// </summary>

     public   class  TextBoxSubmit : TextBox
    
{
        
private Button _buttonsubmit;

        
protected override void Render(HtmlTextWriter writer)
        
{
            
if (_buttonsubmit != null)
            
{
                
this.Attributes["onkeypress"+= "return WebForm_FireDefaultButton(event, '" + _buttonsubmit.ClientID + "');";
            }


            
base.Render(writer);
        }


        
public Button ButtonSubmit
        
{
            
set { _buttonsubmit = value; }
        }

    }
再测试,奇怪,怎么又不可以了。打开源码一看,没什么问题啊。对比一下刚才成功的代码,发现少了WebResource.axd 这个文件的调用。奇怪怎么刚才就有,现在就没了。在找一下原因,原来刚才我使用了DefaultButton,这样才会自动调用这个文件,但我是自己定义的,系统不知道我需要这个文件。于是到网上找一下怎么手动调用这个文件,但没找到,郁闷,只好设一个DefaultButton装一下样子啦,希望以后能找到方法。经过测试,通过!终于解决了两座大山。 
接下来做一下会员信息显示的页面吧,其实现在也没什么信息可显示的。  

再整理一下,明天继续吧。

本文转自博客园cloudgamer的博客,原文链接:我来做百科(第八天),如需转载请自行联系原博主。

相关文章
|
7月前
|
弹性计算 NoSQL 关系型数据库
晕~阿里云降价了!没买的来看看吧!
晕~阿里云降价了!还没买的来看看吧!2024年最新阿里云降价,立即生效!百款产品直降,平均降幅20%,阿里云希望通过此次大规模降价,让更多企业和开发者用上先进的公共云服务,加速云计算在中国各行各业的普及和发展。这次降价包括云服务器ECS、对象存储OSS、云数据库都降价了,真降价,直降价:百款产品直降,平均降幅20%,阿里云百科分享阿里云2024年降价信息汇总表
|
7月前
|
安全 Unix 编译器
【C++初阶】第一站:C++入门基础(上) -- 良心详解-1
【C++初阶】第一站:C++入门基础(上) -- 良心详解-1
|
7月前
|
编译器 C语言 C++
【C++初阶】第一站:C++入门基础(上) -- 良心详解-2
【C++初阶】第一站:C++入门基础(上) -- 良心详解-2
|
存储 人工智能 NoSQL
阿里云服务器主要用途是干嘛的?对于大学生,可以用它做啥事?
阿里云服务器主要用途是干嘛的?对于大学生,可以用它做啥事?阿里云服务器提供了完善的云计算服务和开发环境,对于大学生来说是一个非常好的学习和实践平台。学习云计算可以提高大学生的实践能力和竞争力,阿里云服务器可以提供实际的实践环境,让大学生可以更加深入地了解云计算的原理和技术,并能够在此基础上进行开发和实践。
|
域名解析 运维
阿粉带你从零搭建一个属于自己的个人网站(上)
很多小伙伴私信我,问我怎么弄一个个人博客系统,之前其实也聊过,不过没关系,今天我们再来详细的说一说。 对于已经上线的项目,我们知道后期的迭代主要集中在线上发布这个环节,那么对于一个从零开发完的项目,到上线要经过哪些流程呢?
阿粉带你从零搭建一个属于自己的个人网站(上)
|
Java 应用服务中间件 Linux
阿粉带你从零搭建一个属于自己的个人网站(下)
很多小伙伴私信我,问我怎么弄一个个人博客系统,之前其实也聊过,不过没关系,今天我们再来详细的说一说。 对于已经上线的项目,我们知道后期的迭代主要集中在线上发布这个环节,那么对于一个从零开发完的项目,到上线要经过哪些流程呢?
阿粉带你从零搭建一个属于自己的个人网站(下)
|
前端开发 JavaScript
|
.NET 开发框架 JavaScript