best_in_place 显示下拉菜单选项

Posted

技术标签:

【中文标题】best_in_place 显示下拉菜单选项【英文标题】:best_in_place show dropdown menu option 【发布时间】:2014-09-28 06:15:05 【问题描述】:

我认为这将是一种常见需求,但未能成功找到解决方案。我关注了 Ryan Bates http://railscasts.com/episodes/302-in-place-editing?view=asciicast 的这个 ASCIIcast,现在可以在我的网站上进行功能编辑。但是,我认为这些记录完全可编辑并不直观,因为它们只是显示为当前记录值的纯文本表示,直到您单击它们。我想要一些东西,以便选择下拉菜单默认显示,就像它以正常形式显示一样,如图所示。无论如何使用 best_in_place 或 rest_in_place 来做到这一点?

【问题讨论】:

关于 SO 问题的一个常见问题是,他们希望读者在查看问题之前先去观看视频。一般来说,人们不会费心去做这件事。此外,很难从该图片中看出您要更改选择的哪个方面。你的意思是你想让它有两个小箭头,但实际上不可编辑? 我知道这有多令人沮丧,但总是有只有所有图像的 ASCII 转换:railscasts.com/episodes/302-in-place-editing?view=asciicast,你是对的,我应该只是链接它。目前,可编辑字段只是屏幕上带有当前值的纯文本,只有在您单击它时才会变成下拉列表。我希望它总是看起来像上图中的样子。这更有意义吗? 您使用哪个 gem/jquery 插件/什么来获得焦点选择的样式? OIC,BestInPlace 宝石,github.com/bernat/best_in_place Bootstrap 2.3.2 用于样式和我使用的实际 js 功能github.com/bernat/best_in_place 【参考方案1】:

我知道这不是您正在寻找的答案,但您可以使用 .best_in_place 类设置 best_in_place 值的样式。

我在我的网站上做了这样的事情,这有助于表明该值是可编辑的:

.best_in_place 
    padding-right: 18px;
    background-image: url('*/ link to an edit icon /*');
    background-size: 15px auto;
    background-position: right center;
    background-repeat: no-repeat;
    cursor: pointer;


.best_in_place:hover 
  background-color:#eeeeee;

【讨论】:

【参考方案2】:

我认为您想要做的是找到应用于元素悬停状态的样式,并将它们也复制到元素的正常状态。

在 chrome 检查器中:

右键单击选择标签并选择“检查元素” 右键单击“元素”选项卡中显示的元素并选择“强制元素状态”,然后选择“悬停”

现在,在检查器的右侧,您应该看到应用于元素:hover 状态的样式。将这些复制到您的样式表中,并从规则末尾删除 ":hover" 部分。您可能需要在规则中添加一些额外的选择器,以确保您不会对整个网站的所有选择都执行此操作。

【讨论】:

强制任何活动、悬停、焦点、访问都不会产生下拉菜单。我不知道那么多 javascript 但我的假设是在 onclick 事件中它以某种方式将元素更改为下拉菜单。 image of problem【参考方案3】:

如果您的原始表单输入是通过单选按钮,则下拉菜单是 best_in_place 的默认行为。否则,您可以使用 :colllection 至少验证新数据条目。 例如在 haml 中,更新后的答案必须是红色、绿色或蓝色:

.flex1=best_in_place :color, :type => :select, :collection => (["red","blue","green"])

【讨论】:

以上是关于best_in_place 显示下拉菜单选项的主要内容,如果未能解决你的问题,请参考以下文章

面向对象组件——下拉菜单

asp二级联动下拉菜

Jquery下拉菜单单击始终打开

为啥网页下拉菜单弹不出来

下拉菜单选中后还是显示默认值

从下拉列表中选择选项后,Kendo UI Grid 中的下拉菜单显示对象-对象