是jQuery.append破坏了我的Rails表单并导致它无法完全呈现
Is jQuery .append breaking my Rails form and causing it not to fully render?
遇到一个奇怪的问题。我使用jQuery的.append()
将包含Rails表单的<div>
放在用户在Rails应用程序中选择的段落标记旁边。
首先,在添加jQuery效果之前,我通过在页面上放置一个表单来测试它。它正确地加载、工作并将用户的文本发布到我的数据库中。
其次,我添加了这个效果,带有表单的<div>
确实加载了,但奇怪的是,你无法点击它。文本光标会出现一段时间,然后消失,用户实际上无法在text_field中输入任何内容。
以下是我正在运行的内容:
view.html.erb
<% @posts.each do |post| %>
<h2 id="title"><%= post.title %></h2>
<div id="paragraph"><%= markdown(post.content) %></div>
<% end %>
<div class="exampleToggle"> <!-- div that should append -->
<%= form_for :comments do |f| %>
<div class="form-group">
<div class="field">
<%= f.label :username %><br>
<%= f.text_field :username, class: "form-control" %>
</div>
</div>
<div class="form-group">
<div class="field">
<%= f.label :post %><br>
<%= f.text_area :post, class: "form-control" %>
</div>
</div>
<div class="actions">
<%= f.submit "Save", class: "btn btn-success-outline" %>
</div>
<% end %>
</div>
<script>
$(document).ready(function(){
var whatever = document.getElementsByClassName("exampleToggle");
$("p").click(function(){
$(this).append(whatever);
});
});
</script>
正如我所提到的,表单在点击段落元素后确实加载并看起来应该如何;但是,表单将不接受文本输入。
此外,为了清晰起见,这里是将<div>
放置在点击段落右侧所涉及的CSS:
{
position: relative;
}
.exampleToggle {
position: absolute;
top: 0;
margin-left: 8%;
left: 100%;
width: 35%;
height: 100px;
}
知道为什么这会破坏表单/表单助手吗?
第1版:为了清楚起见,这里的中心问题似乎是焦点效应。为了解决这个问题,我更新了Javascript,允许在激活.field
类时输入值,但它没有解决这个问题。
<script>
$(document).ready(function(){
var whatever = document.getElementsByClassName("exampleToggle");
$("p").click(function(){
$(this).append(whatever);
});
$('.field').click(function () {
var val = $(this).val();
if (val == "") {
this.select();
}
});
});
</script>
您给出了$("p")
,但您的问题中没有p标记。
此外,您将相同的id
循环到不同的字段,这是不正确的,ID应该是唯一的。相反,选择类而不是id。
您应该将一个类带到paragraph _id字段,并根据所需的类编写jquery函数。
试试这个,
<% @posts.each do |post| %>
<h2 id="title"><%= post.title %></h2>
<div class="paragraph"><%= markdown(post.content) %></div>
<% end %>
<div class="exampleToggle"> <!-- div that should append -->
<%= form_for :comments do |f| %>
<div class="form-group">
<div class="field">
<%= f.label :username %><br>
<%= f.text_field :username, class: "form-control" %>
</div>
</div>
<div class="form-group">
<div class="field">
<%= f.label :post %><br>
<%= f.text_area :post, class: "form-control" %>
</div>
</div>
<div class="actions">
<%= f.submit "Save", class: "btn btn-success-outline" %>
</div>
<% end %>
</div>
<script>
$(document).ready(function(){
var whatever = document.getElementsByClassName("exampleToggle");
$(".paragraph").click(function(){
$(this).append(whatever);
});
});
</script>
相关文章:
- 在刚刚调用的append函数之后,jquery.height()不会返回实际值
- Jquery append oly获取循环Rails中的最后一个elemen
- MutationObserver observe jquery append?
- jQuery通过Json数组在append循环中
- jQuery动态使用.append()添加输入,但发布表单不是追加数据
- 使用jquery.append()方法
- 动态jQuery不在.append()之后发布表单的添加输入
- JQuery无法通过.append()或追加HTML.HTML()
- jQuery:append()不是't在选择器中插入任何元素
- JQuery Append html5
- jQuery:无法定位通过 .append() 添加的元素
- 如何防止 jQuery append() 中的自动标记关闭
- 在 Append 中追加,在 Jquery 中追加中的 Iframe
- 在 Jquery append 之后立即渲染 html
- Jquery类选择器无法选择用.append()添加的新类实例
- Trouble with jquery .append
- Jquery ajax append html file based on url
- jQuery.append'我不能胜任我的工作
- 将变量作为参数传递给 onclick 函数,在 .append JQuery 中使用双引号和单引号
- 使用.append-Jquery重新加载数据会使数据堆叠并重复