我试图在点击页面上的另一个控件后保存用户的输入。我看了一下focusout事件,但是每次用户输入值或选择另一个控件时它都会触发。这是我如何使用它:
$('#txt_ComplainingAbout').focusout(function (e) {
$.ajax({
type: "POST",
url: "Form.aspx/Save",
data: "{'id': '" + this.value + "','value': '" + this.value + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.d == 'success') {
}
}
});
e.preventDefault();
});
还有其他方法可以为每个控件调用上面的ajax调用吗?
答案 0 :(得分:1)
blur
事件不会给你你想要的行为吗?
另外,你看过委托活动了吗?使用委派方法,您可以使用单个事件处理程序来处理由多个元素引发的事件。因此,如果您有一个包含10,000个单元格的表,并且您希望在单击时执行某些操作,而不是将事件处理程序附加到每个单元 - 这对性能而言代价很高 - 我们将一个事件处理程序附加到委托处理的表中所有活动。
因此,遵循此范例,您可以始终为表单处理单个事件处理程序,该表单处理该表单中的每个输入。
$("form").on("blur", ":input", function(e) {
// this refers to whichever form element triggered the event
var $this;
$.ajax({
type: "POST",
url: "Form.aspx/Save",
data: "{'id': '" + $this.attr("id") + "','value': '" + $this.val() + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
if (msg.d == 'success') {
}
}
});
e.preventDefault();
});
答案 1 :(得分:0)
尝试以下内容。
$('#txt_ComplainingAbout').unbind('focusout').bind('focusout', function (e) {
//your code
return false; //to prevent the browser actually following the links!
});
<强>说明强>
focusout(function() {}
方法是.bind('focusout', handler)
的快捷方式。
有关详细信息,请查看.focusout()
通过使用上述方式(unbind/bind
),您可以将问题排序,例如点击按钮一旦触发2次或问题就可以解决问题。
我希望这会对你有所帮助。