gpt4 book ai didi

javascript - 使用 Javascript/JQuery/Rails 3 动态添加新行

转载 作者:数据小太阳 更新时间:2023-10-29 06:03:29 27 4
gpt4 key购买 nike

我正在构建一个时间表表单,该表单包含一个日历,使用户能够选择指定日期并搜索项目。我有这个功能。我基本上拥有的是:

enter image description here

一旦用户搜索他们的项目并按下加号按钮,就会显示该指定项目。在这种情况下是 Asda,用户然后单击加号图标,这将创建一个新行并将其放入表“项目任务”中。如何在 Javascript/JQuery 中执行此操作。

很抱歉提出这样一个基本问题,但我仍在学习 Javascript/JQuery。

我目前有一个链接到 project_project_tasks_path( project.id ) 的加号图标。这只是暂时的。

这是我目前所拥有的:

    <div class="left">
<table border="2" width="" id='projects' class='datatable'>
<thead>
<tr>
<th>Number &nbsp</th>
<th>Name</th>
<th></th>
</tr>
</thead>
<tbody>
<% @projects.each do |project| %>
<tr>
<td><%= project.project_number %></td>
<td><%= project.project_name %></td>
<td><%= link_to image_tag("icons/add.png"), project_project_tasks_path( project.id ), :remote => true %></td>
<!-- link_to image_tag("icons/add.png"), tasklist_path(project.id), :as => "tasklist" -->
</tr>
<%- end -%>
</tbody>
</table>
</div>

<div class="right">
<b>Recently Viewed</b>
<table>
<tr>
<th>Project No.</th>
<th>Project names</th>
<th>Project Leader</th>
<th></th>
</tr>
<tr>
<td>123</td>
<td>Test</td>
<td>1</td>
<td><%= link_to image_tag("icons/add.png") %></td>
</tr>
</table>
</div>
</fieldset>

<fieldset>
<b><center>Hours for Week commencing: <span id="startDate"><%= Date.today.beginning_of_week.strftime('%d/%m/%Y') %></span></center></b>
</fieldset>

<!-- Task list table -->
<div style="float: right; width: 300px; padding-left: 20px;">
<fieldset>
<b>Tasks for project</b>
<ul id="task_list">

</ul>
</fieldset>
</div>

<!-- Hours list table -->
<fieldset>
<table>
<tr>
<td>Leave</td>
<td><input class="dayinput" type="text" name="Leave"></td>
</t>
<tr>
<td>TOIL</td>
<td><input class="dayinput" type="text" name="TOIL"></td>
</tr>
<tr>
<td>Sick</td>
<td><input class="dayinput" type="text" name="Sick"></td>
</tr>
<tr>
<td>Total</td>
<td><input id="total" class="total_low" type="text" value="0" disabled="">
</tr>
</table>
</fieldset>

编辑:

我创建了一个task_list.js.erb,如下所示:

$('#task_list').html('');

<% @project.project_tasks.each do |task| %>
$('#task_list').append('<ul><%= task.task_name %>');
<% end %>

项目总监

 def index
# check if we've got a project id parameter
if( params[:project_id].nil? )
@project = nil
else
@project = Project.find(params[:project_id])
end

if @project.nil?
@project_tasks = ProjectTask.all
else
@project_tasks = Project.find(params[:project_id]).project_tasks
end
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @project_tasks }
format.js # index.js.erb
end
end

根据所做的更改,它输出:

Inital Outlook if possible

JQuery Ui 自动完成代码:

$(function() {
function log(message) {
$( "<div/>" ).text( message ).prependTo("#log");
}
$("#tags").autocomplete({
source : function(request, response) {
$.ajax({
url : "/projectlist",
dataType : "json",
data : {
style : "full",
maxRows : 12,
term : request.term
},
success : function(data) {
var results = [];
$.each(data, function(i, item) {
var itemToAdd = {
value : item,
label : item
};
results.push(itemToAdd);
});
return response(results);
}
});
}
});
});

最佳答案

使用 append 或 prepend 方法使用 jQuery 添加到 DOM 非常简单。

$('element_to_add_to').append('the html to append');
$('element_to_add_to').prepend('the html to append');

同时查看 jQuery 文档中的空方法。

此外,您有一些错误的标记。任务列表 <ul>没有<li>的,那里的 table 有一个额外的 </tr> .

编辑:从您更新的帖子来看,您似乎不仅要在表中插入一行,还要同时将数据保存到数据库中。在这种情况下,您需要对将数据保存在数据库中的 Controller 方法进行 ajax 调用。如果调用成功,则将更新的行添加到表中。

$.ajax({
type: "POST",
url: "path to your route",
data: "the data to send to your controller",
success: function(data){
// here is where you process the return value from your controller method
// the data variable will hold the return value if the call is successful
// you can make your controller return the html to be inserted in your table
// and insert it from here or just return a status message and build and add
// the html manually here.
}
});

关于javascript - 使用 Javascript/JQuery/Rails 3 动态添加新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6896983/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com