2014-01-30 17 views
5

最后更新:退格不是形式正与复杂的关联

我发现了什么问题了。我正在运行linux,并且无法使用backspace返回我喜欢做的事情。所以我有一个扩展运行导致这个错误。我不确定这是否是一个破坏它的更新,因为我不记得有过这个问题。

更新2:

所以,我发现这是行不通的任何地方有一个数字输入表单上的任何地方我的应用程序。它只在Chrome上执行此操作。

原文:

所以我必须接受的属性对于一个复杂的“富”加盟的形式。或者“has_many through:”加入。当我进入一个输入字段时,说“97.8”,然后通过点击退格键将8改为7,而是使用浏览器的后台页面。我创建的任何其他正常表单都能正常工作

下面是我的形式

= simple_form_for @student do |f| 
    = f.fields_for :student_classes do |ff| 
    = f.input :grade 
    = f.association :class 

然后在我的控制器我有

def new 
    @student = Student.new 
    @student.student_classes.build.build_class 
end 

在我的学生模型我有:

has_many :student_classes 
has_many :classes, through: :student_classes 
accepts_nested_attributes_for :student_classes 

在我StudentClass模型我有

belongs_to :student 
belongs_to :class 
accepts_nested_attributes_for :class 

最后,在我的类模型我有

has_many :student_classes 
has_many :students, through: :student_classes 

任何帮助,您可以给将是美好的。这是我遇到的一个非常奇怪的问题。

更新:

我想通了,它仅仅是接受不退格浮动的投入。如果它接受一个字符串,那么它工作正常。

+0

这是一个浏览器的特定行为? –

+0

是的,我刚刚检查了它在Firefox上,它的工作原理。所以它只在铬上做到这一点。 – moosilauke18

回答

0

您可以使用javascript将事件处理程序附加到退格键(代码为8),然后在按下按键时执行任何操作。在你的情况,你会想另外筛选的keydown无论您输入字段内发生了:

$(document).on("keydown", function (e) { 
    if (e.which === 8 && $(e.target).is("input, textarea")) { 
    e.preventDefault(); 
    <do whatever you want> 
    } 
}); 

或者如果你喜欢的CoffeeScript:

$(document).on "keydown", (e) -> 
    if e.which is 8 and $(e.target).is("input, textarea") 
    e.preventDefault() 
    <do whatever you want> 
    return 

可以input, textarea改变选择相匹配的类型,类或您需要的输入的编号。

啊,跨浏览器互操作性的温暖和模糊的世界......

+0

我发现它不需要使用不同的浏览器。这只是我在Linux上运行Chrome时的扩展,以允许退格被用来返回。我不知道是否有更新导致它崩溃或什么。 – moosilauke18