我在页面上有很多用户可以更改的输入元素。我不想提交表格。我只想在用户更改其中一个元素内的值后更改数据库值。
我目前正在尝试将焦点绑定到每个输入。这是通常做的方式(Facebook等等)?
$('input').focusout(function() {
var current_val = $(this).val();
var preset_val = $(this).attr('rel');//attribute set with original value
if (current_val !== preset_val) {
alert ('Value changed.');//where I would post to php page to update database
}
});"
答案 0 :(得分:1)
“通常完成”的方式是等到用户单击按钮以保存或提交更改。如果您要更新每个更改,您应该确保对用户非常清楚。
使用的适当事件取决于您希望捕获更改的积极程度。对于每次击键更新,keyup
适用于输入,click
适用于选择和无线电/复选框。不太激进的是blur
或change
。
对捕获任何可能的更改采取非常主动的一种方法是将click
和keyup
附加到表单元素本身。这也将节省向每个元素添加侦听器的开销。每次在表单上触发事件时,您可以a)检查原始目标,或b)ajax整个表单,或者c)循环所有元素并检测更改,只有ajax更改字段。
onbeforeupload
可用于在窗口关闭的情况下对表单进行最终检查,但这可能有点过于夸张。
<强>文档强>