1

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

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

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

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

focusobject = $(':focus');

document.activeElement

但是当做一个 JS 警报时,它只是说 [object Object] 和 [object HTMLBodyElement] 而不是“fieldEmail”

有任何想法吗?

更新

我以前用它在后台更新:

function writeNow(datastring) {
    $.ajax( {
        type: 'POST',
        url: 'update.php',
        data: datastring, 
        success: function(data) {
            // Do nothing       
            }
    });
}

这会在 onBlur 上很好地更新字段,但页面本身会根据运行时的几个类方法计算很多结果。如果我使用 AJAX 更新数据库值,我看不到如何设置类变量并在不重新加载的情况下显示正确的结果。

4

3 回答 3

1

当您单击一个元素时,它更有可能获得焦点(除非有一些魔法阻止单击请求焦点)。您可以简单地处理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);
}

jQuery

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

$('.txt-group-1').click(function(evt){
    alert(this.id+' has focus!');
    lastFocus = this.id;
});

然后,lastFocus将始终拥有最后一个具有焦点的元素的 ID,以便您可以在需要时将其放回原处。


更新:

如果 CMS 需要保存字段:

在这种情况下,您最好的朋友将是ajax。这个想法是能够将新值保存在数据库中,而无需刷新整个页面,从而停止之后的任何操作。

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

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

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

于 2013-05-27T21:08:04.763 回答
0

使用 Harsha 的代码片段,除非将其挂在“onchange”上,否则您将在选项卡导航方面产生问题。您将不得不稍微修改您的保存功能,以便它不会触发每个字符。另外,我建议不要更新整个页面,而是使用 AJAX。

于 2013-05-27T20:56:46.093 回答
0
<!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>

试试这个代码。

于 2013-05-27T19:30:54.693 回答