【问题标题】:Javascript: Loading data into an hidden form elementJavascript:将数据加载到隐藏的表单元素中
【发布时间】:2011-05-02 10:47:36
【问题描述】:

我正在做一项学校作业,其中包括创建一个社交网络(基本上:Facebook :P)。这是分组的,我们中的一个人写了一个自动完成的搜索引擎,它的工作原理是这样的:

http://img585.imageshack.us/img585/333/194d61cbc3fe4cc98005ea1.png

您输入一个名称,它使用一些 js 和 php 来查询数据库以查找与您输入的字符串部分匹配的配置文件。现在,我想使用这个功能来实现照片的标记。现在问题是这样的:这个 .js 脚本返回一个无序列表的元素,由链接(hrefs)组成,如果一个被选中:

select: function( event, ui ) {
    if (ui.item) {
        window.location.href = ui.item.href;    
    }
}

被调用以导航到适当的配置文件。现在我想做的是:输入一个字符串,获取查询结果列表,当我单击一个时,我想将它加载到框中。现在我对 PHP 和 JavaScript 的经验几乎为零(基本上我必须从头开始学习,我现在可以处理大部分,但仍然......:P),我无法让它工作

基本上,文本框在 html 中是这样“定义”的:

<div class="widget" id="search">
    <form id="search" method="POST" enctype="multipart/form-data">
        <input type="hidden" name="search" value="3559d7accf00360971961ca18989adc0614089c0" />
        <div class="field text term "><label for="term">Zoeken</label>
            <input type="text" name="term" id="term" class="text" value="" />
        </div>
    </form>
</div>

如何访问该实际文本框并将数据放入其中?有接盘侠吗? :) 尽管尝试了我在那里看到的几乎所有名称、id 或类,但我似乎无法让它工作。我只需要将点击的名称放入框中,这样我就可以将其提交并输入到数据库中,因为必须手动输入整个确切名称并不是真的......够花哨的

【问题讨论】:

  • ID 应该是唯一的。此外,在一些旧的浏览器中,使用已经存在的name 作为id 可能会导致问题。
  • 如果站点的客户端会变大(如预期的那样),最好使用像 MooToolsjQuery 这样的 javascript 库来实现跨浏览器的一致性,并且轻松我们。但是对于简单的 DOM 操作和类似的事情,请继续使用 vanilla js。
  • Marcel: 是的,但这部分代码不是我自己写的,我只是想适应它:) Zirak: 我们确实使用了 jQuery,这段代码是其中的一部分(或至少基于它),但我们几乎所有的 javascript 都基于 jQuery 库和插件。
  • 那么你应该回到写它的人那里,告诉他/她标记存在严重问题。确实,您不应该尝试适应这样的错误(甚至可能无法解决它)。

标签: php javascript jquery html autocomplete


【解决方案1】:
document.getElementById('term').value = newValue;

或者,使用 jQuery(如您在标签中指定的那样):

$('#term').val(newValue);

【讨论】:

  • 我已经尝试了这两种方法,但没有任何结果。我单击列表中的名称,下拉框消失并且该字段保持为空。奇怪的是,这基本上是简单的 jQuery 自动完成代码,在 jQ 演示中,当单击其中一个结果时,它确实会加载到框内。有没有感觉我得惹恼那个写它的小组成员,除非有人有不同的想法? :)
  • @Licargon:你在你的代码中哪里尝试过?你确定有ID为termonly元素吗?如果 jQuery 自动完成功能应该自己提供,那么您不应该尝试以这种方式解决它,而是确保插件正常工作(这可能仍然是因为还有另一个 ID 为 term 的元素)。
  • ID“term”在该页面上是唯一的,所以这无关紧要。 (因为它也用于 php 数据源,所以这个家伙确保它是唯一的)。我已经在自动完成代码的“选择”功能中进行了尝试(当我单击应该与名称关联的链接时,该部分将重定向我的浏览器)。当我刚刚输入 alert("Test");在那里,当我点击它时它会提醒我该消息,所以我有正确的位置放置代码,但它似乎不起作用。
  • @Licargon:我在您的代码中看不到它,但您的select 函数可能会覆盖jQuery 之一。另一种猜测是term不再是文本输入,而是被插件转化为一些复杂的东西,所以value属性不再对其产生影响。
  • 我做了更多的测试,并通过使用 alert(document.getElementById('term').value);我实际上可以阅读我输入的内容,但我似乎无法在其中输入内容。所以看来我得到了正确的 id & all,但我想这是作者搞砸的东西,这不仅仅是我对 js 的基本了解。感谢您的帮助,我现在就去戳他,而不是浪费时间尝试相同的代码 500 次 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 2016-01-07
  • 2016-08-16
  • 1970-01-01
相关资源
最近更新 更多