Button的onclick里有javascript脚本时提示字符文本中的字符太多的问题
2009-07-27 11:53
323 查看
在aspx页面里, 我们试图在用户点击删除按钮的时候, 提示用户: "是否确认删除?", 我们可以有两种方法解决;
// 正确
<input
id
="delete"
name
="delete"
type
="submit"
onclick
="return confirm('是否确认删除?');"
language
="javascript" value="删除"
runat
="server" />
上面的写法没有问题, 但是用的是html控件, 感觉有点别扭. 是啊, 有asp:button这个web控件不用, 反而用html控件, 这样总显得有点不够专业, ^_^. 但是如果我们在asp:button里这么写的话, 问题就来了:
// 出错
<asp:button
id
="delete"
text
="保存"
onclick
="return confirm('是否确认删除?')"
runat
="server" />
在页面显示示编译器会报错:
编译器错误信息:
CS1041: 应输入标识符,“return”是关键字
但是如果删除"return", 还是会报错:
编译器错误信息:
CS1012: 字符文本中字符太多
为什么会出现这个问题? 我没有仔细想过(年轻人办事总有点毛糙嘛:P), 不过据我猜测,
是web控件的onclick事件, 跟后台处理方法是关联的, 所以不能直接附加客户端脚本. 那么就没办法了, 办法是有的, 呵呵.
我在后台代码的Page_Onload方法里写:
// 正确
this
.delete.Attributes.Add( "onclick", "if( !confirm('是否确认删除?') ){ return false; }" );
为何不直接这么写:
// 逻辑问题
this
.delete.Attributes.Add( "onclick", "return confirm('是否确认删除?');" );
是因为如果web控件需要触发页面验证的时候, 会在页面该input按钮的onclick事件里, 附加上一段验证脚本, 也就是说生成的最终页面html代码看起来可以是这样的:
// 逻辑问题
<input
id
="delete"
name
="delete"
type
="submit"
onclick
="return confirm('是否确认删除?');if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); "
language
="javascript"
value
="删除"
runat
="server" />
上面脚本的问题就在于, 不论提示时确认还是取消, 都直接return了,
不会继续执行后面的页面验证脚本, 然而页面验证脚本是asp.net引擎在最后生成页面时才附加上去的, 无论如何,
咱们也没办法把脚本写在asp.net引擎生成的脚本后面, 所以我们的逻辑只能这么写, 如果提示时取消, 就return, 如果确认,
就不处理, 留待后面脚本继续执行.
以上是页面按钮的写法, 适用于asp:button,
asp:linkbutton等相当于页面按钮的web控件. 但是在asp:datagrid里, 因为是一个列表, 每行都有相同的控件,
控件名称是不确定的. 这次我们可以直接在页面写js脚本了. 譬如我们的aspgrid的删除列是这样的:
<asp:buttoncolumn headertext
="操作" commandname
="delete" text
="删除" />
我们在aspx页的html代码里加入如下脚本:
<script
language
="javascript"
type
="text/javascript">
function
deleted()
{
if
(event.srcElement.innerText=="删除")
event.returnValue=confirm("确实要删除此记录?");
}
document.onclick=deleted;
</script>
以上应该有最好的方法, 我只是提出一种可行的实现方法.
原文地址:http://lj.soft.blog.163.com/blog/static/7940248120087281170243/
// 正确
<input
id
="delete"
name
="delete"
type
="submit"
onclick
="return confirm('是否确认删除?');"
language
="javascript" value="删除"
runat
="server" />
上面的写法没有问题, 但是用的是html控件, 感觉有点别扭. 是啊, 有asp:button这个web控件不用, 反而用html控件, 这样总显得有点不够专业, ^_^. 但是如果我们在asp:button里这么写的话, 问题就来了:
// 出错
<asp:button
id
="delete"
text
="保存"
onclick
="return confirm('是否确认删除?')"
runat
="server" />
在页面显示示编译器会报错:
编译器错误信息:
CS1041: 应输入标识符,“return”是关键字
但是如果删除"return", 还是会报错:
编译器错误信息:
CS1012: 字符文本中字符太多
为什么会出现这个问题? 我没有仔细想过(年轻人办事总有点毛糙嘛:P), 不过据我猜测,
是web控件的onclick事件, 跟后台处理方法是关联的, 所以不能直接附加客户端脚本. 那么就没办法了, 办法是有的, 呵呵.
我在后台代码的Page_Onload方法里写:
// 正确
this
.delete.Attributes.Add( "onclick", "if( !confirm('是否确认删除?') ){ return false; }" );
为何不直接这么写:
// 逻辑问题
this
.delete.Attributes.Add( "onclick", "return confirm('是否确认删除?');" );
是因为如果web控件需要触发页面验证的时候, 会在页面该input按钮的onclick事件里, 附加上一段验证脚本, 也就是说生成的最终页面html代码看起来可以是这样的:
// 逻辑问题
<input
id
="delete"
name
="delete"
type
="submit"
onclick
="return confirm('是否确认删除?');if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); "
language
="javascript"
value
="删除"
runat
="server" />
上面脚本的问题就在于, 不论提示时确认还是取消, 都直接return了,
不会继续执行后面的页面验证脚本, 然而页面验证脚本是asp.net引擎在最后生成页面时才附加上去的, 无论如何,
咱们也没办法把脚本写在asp.net引擎生成的脚本后面, 所以我们的逻辑只能这么写, 如果提示时取消, 就return, 如果确认,
就不处理, 留待后面脚本继续执行.
以上是页面按钮的写法, 适用于asp:button,
asp:linkbutton等相当于页面按钮的web控件. 但是在asp:datagrid里, 因为是一个列表, 每行都有相同的控件,
控件名称是不确定的. 这次我们可以直接在页面写js脚本了. 譬如我们的aspgrid的删除列是这样的:
<asp:buttoncolumn headertext
="操作" commandname
="delete" text
="删除" />
我们在aspx页的html代码里加入如下脚本:
<script
language
="javascript"
type
="text/javascript">
function
deleted()
{
if
(event.srcElement.innerText=="删除")
event.returnValue=confirm("确实要删除此记录?");
}
document.onclick=deleted;
</script>
以上应该有最好的方法, 我只是提出一种可行的实现方法.
原文地址:http://lj.soft.blog.163.com/blog/static/7940248120087281170243/
相关文章推荐
- 解决WEB页面引入javascript脚本时提示未结束的字符串常量的问题
- asp控件button "字符文本太多"错误的处理
- asp.net 数据绑定 使用eval 时候报 字符文本中的字符太多 问题的解决方法
- asp.net 数据绑定 使用eval 时候报 字符文本中的字符太多 问题的解决方法
- 服务器控件button点击时执行脚本弹出提示对话框Button2.Attributes.Add("onclick","事件")
- asp.net 数据绑定 使用eval 时候报 “字符文本中的字符太多” 问题解决
- python脚本处理文本时遇到的字符问题:UnicodeDecodeError: " " codec can't decode byte
- javascript与ASP:Button中onclick问题
- Linux shell脚本中复制特殊字符问题
- href javascript target onclick 执行顺序 浏览器兼容问题
- Javascript限制多行文本输入框的字符数
- Android问题Button的onClick监听里,如何调用外部类的方法
- 解决JavaScript页面刷新 与 弹出窗口问题 无提示关闭窗口
- 关于AutoCompleteTextView 为什么必须输入两个字符才能出现补全提示的问题的解决办法
- Shell脚本关于屏幕输出的字符进行颜色控制的问题
- 将Capicom调用代码封装到ActiveX——解决javascript调Capicom读取数字证书信息时,IE弹出安全提示的问题
- javascript解决长度字符长度问题
- DevExpress的JavaScript脚本智能提示
- 【转】javascript IE下的关闭ie窗口出现提示关闭问题
- Android LinearLayout 嵌套 button 监听LinearLayout的onClickListener事件出现问题