none
极度困惑,按钮绑定客户端事件。 RRS feed

  • 问题

  • 请能给我一个详细的解答,这个问题困扰很久了,虽然每次都过关,但是还不明白本质,所以来这里问个为什么?
    我用的是vs2003,写web程序。问题就是,客户端验证的问题。在服务器按钮上绑定客户端事件JavaScript,来验证,每次用都不是那么顺利,调式过来调过去,跌跌装装的,没一次顺心的。请看我的源码
    this.del_data.Attributes.Add("onclick","return del_data()");
    今天的问题是调用这个del_data()方法不成功。
    <script>
    function del_data()
    {
    alert("test")
    }
    </script>
    后来我该了方法名为ddd()又可以正常使用,真是抑郁的很?是不是asp.net自带的安全机制,捕获了我这个方法中的 del,而没有执行?还有this.del_data.Attributes.Add("onclick","return del_data()");中,return del_data()后边什么情况下要带上分号,有时候不带分号不成功,有时候好像又无所谓分号,被搞的云里雾里的,
    2010年1月19日 2:12

答案

  • 你好!

    我测试了的确是这样的,原因当控件 ID 与 方法名相同时,自动将 del_data 解析成了 Id 为 del_data 的这个控件对象,所以这里当 ID 与方法重名时去执行了控件的对象方法(相当于执行了 this();)。这和你是否使用 VS 2003 无关。

    知识改变命运,奋斗成就人生!
    • 已标记为答案 fangyanqin 2010年1月21日 3:24
    2010年1月19日 5:37
    版主

全部回复

  • 你好!

    不管怎么样一般都带上分号,这样规范一些。至于今天你将 del_data 改为 ddd 后可以正常使用,可能是因为 在你的方法中有重复的 del_data 方法重在。或是在最终显示到页面上时有语法错误。

    知识改变命运,奋斗成就人生!
    2010年1月19日 3:16
    版主
  • 方法中没有什么问题,我在想是不是我控件的名称与调用JavaScript中方法名相同,而不能调用???

    2010年1月19日 4:10
  • 你好!

    应该不是这个问题,你可以将你出问题时的网页源代码发现出看看,大家帮你分析一下。

    知识改变命运,奋斗成就人生!
    2010年1月19日 4:59
    版主
  • 由于代码比较长,我只取和这个相关的完整的,其实也很简单。我测试了一下,如果,把控件名和方法名修改一样,调用失败。
    后台:
    private void Page_Load(object sender, System.EventArgs e)
    {
    this.re_data.Attributes.Add("onclick","return chk()");
    this.del_data.Attributes.Add("onclick","return del_data()");//改成和方法名一样,就无法调用了
    }

    前台方法:
    function del_data()
    {
    if(document.getElementById("get_id").value=="" )
    {
    alert("请先点选菜单名称后再操作!!");
    return false;
    }

    if (window.confirm("确认要删除吗?"))
    {
    return true;
    }
    else
    {     
    return false;
    }
    return true;
    }


    ================难道说这个是vs2003的一个bug?
    2010年1月19日 5:18
  • 你好!

    我测试了的确是这样的,原因当控件 ID 与 方法名相同时,自动将 del_data 解析成了 Id 为 del_data 的这个控件对象,所以这里当 ID 与方法重名时去执行了控件的对象方法(相当于执行了 this();)。这和你是否使用 VS 2003 无关。

    知识改变命运,奋斗成就人生!
    • 已标记为答案 fangyanqin 2010年1月21日 3:24
    2010年1月19日 5:37
    版主
  • 你的问题在于:
    你需要看看你的客户端生成的浏览器中的源代码里面的语法是否正确。

    有时候asp.net自己会产生一些脚本。如果不加分号,则会造成错误。

    要真正解决你的烦恼,请在出现问题的时候查看一下源代码。再找出原因,再去修改asp.net 的代码
    【孟子E章】
    2010年1月19日 8:37
    版主