我来做百科(第八天)

简介:
今天先来解决一下昨天留下的问题。
首先是“ 只能提交一次的按钮 ”,在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的博客,原文链接:我来做百科(第八天),如需转载请自行联系原博主。

相关文章
|
9月前
|
弹性计算 NoSQL 关系型数据库
晕~阿里云降价了!没买的来看看吧!
晕~阿里云降价了!还没买的来看看吧!2024年最新阿里云降价,立即生效!百款产品直降,平均降幅20%,阿里云希望通过此次大规模降价,让更多企业和开发者用上先进的公共云服务,加速云计算在中国各行各业的普及和发展。这次降价包括云服务器ECS、对象存储OSS、云数据库都降价了,真降价,直降价:百款产品直降,平均降幅20%,阿里云百科分享阿里云2024年降价信息汇总表
|
算法 Java 机器人
百度松果菁英班--3月日常练习题-1
百度松果菁英班--3月日常练习题-1
67 0
|
9月前
|
安全 Unix 编译器
【C++初阶】第一站:C++入门基础(上) -- 良心详解-1
【C++初阶】第一站:C++入门基础(上) -- 良心详解-1
|
9月前
|
编译器 C语言 C++
【C++初阶】第一站:C++入门基础(上) -- 良心详解-2
【C++初阶】第一站:C++入门基础(上) -- 良心详解-2
|
前端开发 JavaScript
|
数据安全/隐私保护