【问题标题】:input element displays something else than it has in value输入元素显示的东西不是它的值
【发布时间】:2013-03-21 13:12:35
【问题描述】:

我正在尝试为自己制作一个基于 jQueryUI 自动完成功能的小 jQuery 插件,因为我有很多不同的自动完成字段,我想区别对待。

虽然我插件的其他所有部分都运行良好,但它做了一件我不明白的事情。 尽管 onSelect 函数明确定义了这一点:

box.val(ui.item.nazev); // item name
boxID.val(ui.item.value);

完成后我可以通过列出这些元素的值来确认,对于用户来说,box 元素会以某种方式显示 ui.item.value

我尝试了所有我能想到的可能性,但都没有奏效……我很绝望。

插件包含在这里:http://jsfiddle.net/meridius/AVA6M/


编辑:

好的,它又快又脏,但我设法让它在没有 AJAX 的 jsfiddle.net 中工作。它并不完美(结果不会被过滤为输入内容),但是当您选择某些结果时,您会明白我的意思。

【问题讨论】:

  • 你调试过你的脚本吗?一些 F12 可以给你答案。
  • 你说的F12是什么意思?我使用了 Web 控制台和 Firebug,它们都没有显示任何错误。
  • 对于 F12,我的意思是,对于 Firefox,Firebug。您应该使用 firebug 来调试您的脚本并分析 box 元素值更改的确切时刻。在这里,您为我们提供了大量信息,并且帮助您解决问题需要大量工作,因为小提琴不起作用。除非您编辑帖子以缩小代码方面的问题范围,否则您不太可能得到一些答案。
  • 所以我更新了 jsfiddle 上的插件(如上所示)。我也尝试在 Firebug 中对其进行调试,但看起来我已经在上面写过 - onSelect 部分确实为 box 和 boxID 元素设置了正确的文本,但是在它完成后我失去了踪迹,这就是它混淆的地方。我不知道接下来在哪里放置断点。
  • 工作小提琴让我找到了解决您问题的方法。我发布了一个答案,请查看。

标签: jquery html jquery-plugins input jquery-ui-autocomplete


【解决方案1】:

使用 Chrome (F12) 调试您的小提琴我在 jquery-1.9.1.js 的第 2257 行发现了您的问题。这是一个事件传播问题,因此以下代码应该可以解决您的问题。

select: function (event, ui) {
            o.onSelect(event, ui, box, boxID);
            return false; //This line stops event propagation solving the problem.
},

注意:有关如何停止事件传播的详细信息,请参阅此帖子。 event.preventDefault() vs. return false

【讨论】:

  • 谢谢,这解决了我的问题。也感谢您的链接。顺便说一句,我已经在原始代码中返回 false(现在 onSelect 的最后一行),我只是在“pluginifacion”期间移动了它。奇怪,它不会影响 select: 事件,而它也返回 false。
  • 很高兴我能帮上忙 :) 找到问题的方法是在 onSelect 函数中放置一个断点,然后从那里继续按 F11(调试时转到下一步)。
猜你喜欢
  • 1970-01-01
  • 2016-08-25
  • 2023-02-18
  • 2020-06-11
  • 2021-10-08
  • 2013-08-07
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多