Javascript 如何提交输入字段的ID

Javascript 如何提交输入字段的ID,javascript,jquery,html,Javascript,Jquery,Html,单击焦点输入字段时,是否可以(如果可以,如何提交)提交焦点输入字段的ID? 我在一个在线工具中做了一个自动保存功能,每次输入字段模糊时都会保存 但是,由于页面本身在每个字段模糊时都会更新,因此当单击另一个字段时,它会失去焦点,因此我希望它提交该字段的ID,只是单击,以便我可以手动将其设置为焦点 (离题)我在更新时不再使用jQuery,因为我需要页面来处理大量的数字,服务器端。。。因此,在我看来,它最方便的工作方式就是按照所描述的那样 我做了一些研究,得出了两种可能性: focusobject =

单击焦点输入字段时,是否可以(如果可以,如何提交)提交焦点输入字段的ID? 我在一个在线工具中做了一个自动保存功能,每次输入字段模糊时都会保存

但是,由于页面本身在每个字段模糊时都会更新,因此当单击另一个字段时,它会失去焦点,因此我希望它提交该字段的ID,只是单击,以便我可以手动将其设置为焦点

(离题)我在更新时不再使用jQuery,因为我需要页面来处理大量的数字,服务器端。。。因此,在我看来,它最方便的工作方式就是按照所描述的那样

我做了一些研究,得出了两种可能性:

focusobject = $(':focus');

但在执行JS警报时,它只会说[object object]和[object HTMLBodyElement],而不是“fieldEmail”

有什么想法吗

更新

我以前在后台使用此更新:

function writeNow(datastring) {
    $.ajax( {
        type: 'POST',
        url: 'update.php',
        data: datastring, 
        success: function(data) {
            // Do nothing       
            }
    });
}
这会在onBlur上很好地更新字段,但页面本身会根据运行时的几个类方法计算大量结果。如果我使用AJAX更新数据库值,我看不出如何在不重新加载的情况下设置类变量并显示正确的结果。


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Untitled Document</title>
</head>

<body>
<input name="testfield" type="text" id="mtTextField" onClick="alertId(this.id);">
<script type="text/javascript">
    function alertId(getid)
    {
        alert(getid);   
    }
</script>
</body>
</html>
无标题文件 函数alertId(getid) { 警报(getid); }
请尝试此代码。


无标题文件
函数alertId(getid)
{
警报(getid);
}

请尝试此代码。

除了将其挂在“onchange”上之外,请使用Harsha的代码段,否则您将在选项卡导航中产生问题。您必须稍微修改save函数,这样它就不会对每个字符都触发。
另外,我建议不要使用AJAX更新整个页面。

使用Harsha的代码片段,除非将其挂在“onchange”上,否则会在选项卡导航方面产生问题。您必须稍微修改save函数,这样它就不会对每个字符都触发。
另外,我建议不要使用AJAX更新整个页面。

当您单击某个元素时,它更有可能获得焦点(除非有一些向导阻止单击请求焦点)。您可以简单地处理输入组的
onclick
事件并保存它

假设一些输入字段都有classname
txt-group-1

普通JS

var lastFocus = null;
if (document.activeElement.className == 'txt-group-1') {
    lastFocus = document.activeElement.id; // get the field that already has focus
}

var inputs = document.getElementsByClassName('txt-group-1');
for (var i=0;i<inputs.length;i++) {
    inputs[i].addEventListener('click', function(evt){
        alert(this.id+' has focus!');
        lastFocus = this.id;
    },true);
}
然后,
lastFocus
将始终具有具有焦点的最后一个元素的ID,以便您可以在需要时将其放回


更新:

如果CMS需要保存字段:

在那种情况下,你最好的朋友是。这样做的目的是能够将新值保存在数据库中,而不必刷新整个页面,从而停止后面的任何操作

我建议您查看保存字段的方法,并以不需要刷新页面的方式对其进行优化:

$.ajax({
  url: "save.php",
  data: {inputFieldName:'txtEmail', inputFieldValue:'foobar@mail.com'}
})
.done(function(data) {
  console.log('saved'); // after the request is complete
});

任何保存后客户端操作都可以在
.done
事件中指定。还可以从执行请求的服务器端脚本中获取响应。

当您单击某个元素时,它更有可能获得焦点(除非有一些向导阻止单击请求焦点)。您可以简单地处理输入组的
onclick
事件并保存它

假设一些输入字段都有classname
txt-group-1

普通JS

var lastFocus = null;
if (document.activeElement.className == 'txt-group-1') {
    lastFocus = document.activeElement.id; // get the field that already has focus
}

var inputs = document.getElementsByClassName('txt-group-1');
for (var i=0;i<inputs.length;i++) {
    inputs[i].addEventListener('click', function(evt){
        alert(this.id+' has focus!');
        lastFocus = this.id;
    },true);
}
然后,
lastFocus
将始终具有具有焦点的最后一个元素的ID,以便您可以在需要时将其放回


更新:

如果CMS需要保存字段:

在那种情况下,你最好的朋友是。这样做的目的是能够将新值保存在数据库中,而不必刷新整个页面,从而停止后面的任何操作

我建议您查看保存字段的方法,并以不需要刷新页面的方式对其进行优化:

$.ajax({
  url: "save.php",
  data: {inputFieldName:'txtEmail', inputFieldValue:'foobar@mail.com'}
})
.done(function(data) {
  console.log('saved'); // after the request is complete
});

任何保存后客户端操作都可以在
.done
事件中指定。还可以从执行请求的服务器端脚本获取响应。

您可以声明一个变量并将最后一个焦点元素存储在其中。在提交时,提交这个变量,它将有最后一个焦点元素。我很想使用一个隐藏字段。添加代码以设置具有焦点的任何字段的值。虽然您可能需要说明某人单击提交按钮的原因。是的,这是我的意图,但我从未获得字段ID。相反,它尝试传递一个对象,如“[object object]”。您可以声明一个变量并在其中存储最后一个聚焦的元素。在提交时,提交这个变量,它将有最后一个焦点元素。我很想使用一个隐藏字段。添加代码以设置具有焦点的任何字段的值。虽然您可能必须说明某人单击提交按钮的原因。是的,这是我的意图,但我从未获得字段ID。相反,它尝试传递一个对象,如“[object object]”谢谢您的回答:)我尝试了jQuery代码,从技术上讲,它按预期工作,但有一个陷阱……系统由几个输入字段组成,因此,当您单击其中一个字段时,它会自动保存以前活动字段的内容。所有字段都有一个jQuery焦点和一个模糊-我希望我的变量“currentActiveField”将在执行更新然后刷新页面的模糊代码之前设置。这样,我们有3个变量;currentActiveField、blurField、blurFieldValue,我们可以使用blurField变量更新数据库,同时传输新的ID@Anders-单击(onclick)应该在失去焦点(onblur)之前发生,
lastFocus
,在这种情况下,保存的是以前聚焦的元素,而不是新的元素。在blur事件触发页面刷新之前,应该已经知道最后一个焦点元素。如果你想