假设我们有用jQuery编写的代码片段:
$("#saveButtonFull").on("click", function () {
$(".inner").toggleClass("progressBar");
$(".save").toggleClass('textColorize').html("Saved");
});
...因此,应该填写"保存" 自定义按钮的 animation 。它确实做到了!但是我的工作平台是在 ASP.net 上,我在服务器端进行了回复'点击' 事件,该事件执行CRUD操作SQL,在这行aspx文件中:
<div id="saveButtonFull" class="buttonFull btnBorderGreyOut" onclick="document.getElementById('<%= ButtonA.ClientID %>').click()"></div>
我如何实现jQuery逐行运行click事件(在这种情况下.toggleClass()没有被执行!)并且还让服务器端执行?
答案 0 :(得分:1)
您可以将动画绑定在&#39; mousedown&#39;事件而不是点击&#39;。 :)
答案 1 :(得分:0)
您可以执行以下操作之一:
执行一个服务器端事件(执行你的CRUD操作),然后注册一个运行js代码(切换类)的JS函数:
if (!ClientScript.IsStartupScriptRegistered("alert"))
{
Page.ClientScript.RegisterStartupScript(this.GetType(),
"alert", "alertMe();", true);
}
或
runat="server"
,然后通过访问或
切换到AJAX
(将您的逻辑声明为WebMethod - 如果可以使其成为静态并调用POST,您可以在其中处理asudroniosly的crud操作并在回发js中切换css类功能)
我希望这可以帮到你
编辑:
我已经建立了一个使用第一种和第三种可能性的小例子:
代码隐藏文件: https://gist.github.com/ostelaymetaule/5b4a5c401d2c7ba7d423 aspx文件(js和样式): https://gist.github.com/ostelaymetaule/4991c21c31f717152bad
检查出来
答案 2 :(得分:0)
由于您已经对按钮的ID定义了操作,我假设这是唯一需要此操作的按钮。修改您的javascript函数,如下所示:
$("#saveButtonFull").on("click", function () {
$(".inner").toggleClass("progressBar");
$(".save").toggleClass('textColorize').html("Saved");
__doPostBack('<%=ButtonA.ClientID %>','');
});
这将调用服务器端按钮的回发。如果__doPostBack不起作用,您也可以用document.getElementById('<%= ButtonA.ClientID %>').click();
答案 3 :(得分:0)
最后,我得到了答案,感谢 Lorin 的建议,并帮助我找到解决问题的方法。结果是jQuery运行 .toggleClass(),服务器端异步,快速和平滑地执行CRUD操作。
我发现我的页面中缺少 SriptManager 控件,因此添加了:
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true"/>
请注意 EnablePageMethods 设置为“ true ”,这使用户可以输入服务器端Web方法并让它执行代码。
然后我删除了 #saveButtonFull 上的 .click(),而是在标记本身中添加了“ onclick ”属性:
<div id="saveButtonFull" class="buttonFull btnBorderGreyOut" onclick="saveButtonProgress()"></div>
为什么你问我?因为它不会触发.click()事件,所以纯JS的人就完成了工作。另外我了解到我无法在Public Static String YouNameIt()Web方法中包含TextBoxes之类的非静态成员,因此我不得不从客户端安排一个数组并将其包含在“data”属性中。 .ajax()事件如:
function saveButtonProgress() {
if (flag === true) {
var vargu = [];
$(".textBox").each(function () {
var currentTxtBoxValue = $(this).val();
vargu.push(currentTxtBoxValue);
});
$.ajax({
url: "http://localhost:49795/UserProfile.aspx/UpdateProfile",
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{'profileArray': '" + vargu + "'}",
async: true,
success: onSuccess,
error: onFailure
});
function onSuccess(msg) {
var success = msg.d;
console.log(success);
$(".inner").toggleClass("progressBar");
$(".save").toggleClass("textColorize");
}
function onFailure(msg) {
var failure = "Error: " + msg.d;
console.log(failure);
}
}
}