asp.net 同一按钮触发事件里面 有JS前端写的东西 有CS端写的东西
能不能先执行完JS前端写的东西 再执行CS后端写的东西?
[解决办法]
可以的啊,先执行onclick事件,然后执行onclientclick事件
[解决办法]
在网上搜了下 说加这个东西
最后发现还是不行protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//给button1添加客户端事件
btnCreateUser.Attributes.Add("OnClick", "return btnCreateUser_onclick()");
}
}
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" OnClientClick="return confirm('确定要删除么');"/>
默认 返回 TRUE
[解决办法]
dataType: "xml",
success: function (data) {
var jsonData = $.xml2json(data);
if (jsonData == false) {
alert("注册失败!原因可能为用户名已存在");
return false;
}
else if (jsonData == "true") {
alert("注册成功!");
location.href = $.getRootPath() + "/User/UserCenter.aspx";
}
else {
alert($.xml2json(data));
return false;
}
}
});
}
else {
alert("您尚未同意服务条款,不能注册");
return false;
}
}
else {
alert("输入字段有误,请检查");
return false;
}
} else {
alert("请按要求填写资料");
return false;
}
}
[解决办法]
$("#btnCreateUser").click(function () {
if (userName.val() != "" && userPwd.val() != "" && userAlignPwd.val() != "" && userEmail.val() != "") {
if (lblUserName.val() == "通过" && lblUserPwd.val() == "通过" && lblUserAlignPwd.val() == "通过" && lblUserEmail.val() == "通过") {
// if (ddlGroup.val() != 0) {
// var selectTex = ddlGroup.find("option:selected").text()
if (alignServer[0].checked == true) {
$.ajax({
type: "POST",
url: $.getRootPath() + "/UserCenter/Jst_User_ValidateUser.asmx/CreateUser",
data: { userName: userName.val(), userPwd: userPwd.val(), userEmail: userEmail.val() },
dataType: "xml",
success: function (data) {
var jsonData = $.xml2json(data);
if (jsonData == false) {
alert("注册失败!原因可能为用户名已存在");
return false;
}
else if (jsonData == "true") {
alert("注册成功!");
location.href = $.getRootPath() + "/User/UserCenter.aspx";
}
else {
alert($.xml2json(data));
return false;
}
}
});
}
else {
alert("您尚未同意服务条款,不能注册");
return false;
}
// }
// else {
// alert("请选择学校群");
// return false;
// }
}
else {
alert("输入字段有误,请检查");
return false;
}
} else {
alert("请按要求填写资料");
return false;
}
});
注册的JS
要解决你的问题的话,不要用jquery动态绑定,直接定义一个函数,写到控件onclientclick里面去吧
<script>
function onClientClick() {
alert("I'm ClientClick!");
return true;
}
</script>
<asp:Button ID="btn_My" runat="server" Text="Button" OnClientClick="return onClientClick();" onclick="btn_My_Click" />
protected void btn_My_Click(object sender, EventArgs e)
{
Response.Write("I'm ServerClick!");
}
<script>
function onClientClick() {
alert("I'm ClientClick!");
return true;
}
</script>
<asp:Button ID="btn_My" runat="server" Text="Button" OnClientClick="return onClientClick();" onclick="btn_My_Click" />
protected void btn_My_Click(object sender, EventArgs e)
{
Response.Write("I'm ServerClick!");
}
这个测试了是先执行了JS弹框 在执行CS端代码
但是放到我项目中来 没有执行JS注册 再执行CS端代码 不知道是什么原因呢
$(document).ready(function () {
$('#<%=Button1.ClientID %>').click(function () {
alert(1);
})
});
可以的啊,先执行onclick事件,然后执行onclientclick事件sorry
始终是onclientClick 事件先执行 后执行jquery 的点击事件,最后是onclick事件