waldol1 的方法有效。在这里,我提出一个建议,并提供另一种方式。
改进:
对于更简洁的代码,只需对每个输入元素使用“add(this)”。
<input onchange="add(this)" />
然后,在 add() 函数中,只需再添加一行即可获取被点击元素的名称
function add(e) {
var name = e.name;
// do stuff
}
替代解决方案:
我不是以经典方式提交表格;我只是在使用输入元素并使用 Javascript 做一些事情。我不关心禁用表单元素,也不想依赖它作为标志。相反,我使用 JS 对象来存储更改的变量,然后在构建参数时只运行对象(在我的情况下,通过 AJAX 请求提交)。
定义一个全局“tosubmit”对象(如果需要,可以使用数组)。
var tosubmit = new Object();
对于我想要更新的任何输入元素,当有变化时我调用 add(this) :
<input onchange="add(this)" />
JS 函数将更改的元素添加到我的临时存储对象中。
function add(e) {
// Store the element and it's value, ready for use later.
tosubmit[e.name] = e.value;
}
当我准备好后,我会为我的 AJAX 更新构建参数。在我的案例中,我使用 ID 运行函数。我运行了 tosubmit 对象,如果更新成功,我将其清除,准备再次使用。
function sendUpdate(id) {
// Start building up my parameters to submit via AJAX to server.
var params = "id="+encodeURIComponent(id);
// Run through the tosubmit object, add any updated form elements.
for (var i in tosubmit) {
params = params + "&" + i + "=" + encodeURIComponent(tosubmit[i]);
}
// (Do other stuff, build my http request, etc)
// Eventually submit params with the http request
http.send(params);
}