【问题标题】:Javascript form input field selection and AJAXJavascript表单输入字段选择和AJAX
【发布时间】:2011-04-15 04:08:53
【问题描述】:

我想我想做一些简单的事情,但我不确定如何执行它。我已经尝试了几个小时,但运气不佳。

function myFunc (form) {
    // determine currently selected field on form - Thank you James!
    var currElem = document.activeElement;
    myAJAX_request();  // This will regenerate the form (no field selected)
    // restore currently selected field on form
    currElem.focus();  // This does NOT work -- WHY?
    currElem.select();
}

我正在寻找一个干净的实现,它将使用“document.forms...”来查找输入字段,而不是必须在每个表单元素上放置一个 id 标记。这可能吗?

【问题讨论】:

    标签: javascript forms dom


    【解决方案1】:

    您可以使用 jQuery 等框架。 jQuery 有 .serialize() 方法,应该完全满足你的需要。 Here it is

    【讨论】:

    • 不,恐怕你误解了我的要求。我不想通过 AJAX 请求发送信息。 AJAX 将刷新内容,然后我想用 JavaScript 访问它并更新选定的输入字段。
    • @zak 你仍然可以使用 jQuery。我读过 Shrinath 给你的 jQuery 选择器链接。 (我没有测试,但我认为它会起作用。)如果你有一个表单“myform”和一个输入“myInput”,那么你可以选择像jQuery("form[name="myform"] input[name="myInput"])这样的输入,选择器基本上是css选择器。编辑:如果你的意思是哪个元素有焦点,它就像document.activeElement
    • 很棒的评论! “document.activeElement”解决了我一半的问题。它是只读的,所以我需要知道如何在 AJAX 调用之后将焦点放回同一个元素。快到了!
    【解决方案2】:

    您可以使用document.getElementByName。我假设你至少有你的领域的名字,不是吗?将它们存储在变量/cookie 中,并在您的myAjax_request() 之后将其取回。

    为了让您以后的生活更轻松,

    您可以使用 jquery 的其他选择器,例如名称、类等。
    阅读 jQuery 的选择器 here

    【讨论】:

    • 我有一个处理多个表单的函数,并且我的“名称”属性在表单中有重复。我需要一种通过表单名称访问字段的方法,这是唯一的。
    • 正在使用类似这样的方式迭代元素是您想要的吗? document.forms.some_form.getElementsByTagName('input'),返回来自<form name="some_form">的所有<input>元素
    • jQuery 支持子选择器,请阅读:api.jquery.com/child-selector 使用它您可以轻松选择特定形式的特定元素
    猜你喜欢
    • 2012-10-22
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多