$(document).ready(function ($) {
$(document).on('click', '.checkbox', function(){
$(this).parent().addClass('completed');
$(this).attr('disabled', true);
uid = $(this).attr('data-uid');
$.get("/api/complete/" + uid);
});
$(document).on('click', '.remove', function(){
$(this).parent().remove();
});
});
$.get("/api/complete/" + uid);
Uncaught TypeError: $.get is not a function
at HTMLInputElement. (script.js:7)
at HTMLDocument.dispatch (jquery-3.4.1.slim.min.js:2)
at HTMLDocument.v.handle (jquery-3.4.1.slim.min.js:2)
(anonymous) @ script.js:7
dispatch @ jquery-3.4.1.slim.min.js:2
v.handle @ jquery-3.4.1.slim.min.js:2
<html>
<head>
<title>Задачи на день</title>
<link rel="stylesheet" href="static/styles.css">
<!--<script src="http://code.jquery.com/jquery-3.3.1.slim.min.js"></script>-->
<script
src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
integrity="sha256-pasqAKBDmFT4eHoN2ndd6lN370kFiGUFyTiUHWhU7k8="
crossorigin="anonymous"></script>
<script src="static/script.js"></script>
</head>
<body>
<div class="container">
<h1>Текущие задачи</h1>
<ul id="todo-list">
% for task in tasks:
% if task.is_completed:
<li class="completed">
<input class='checkbox' data-uid={{ task.uid }} type='checkbox'
disabled='disabled' checked='checked' />
% else:
<li>
<input class='checkbox' data-uid={{ task.uid }} type='checkbox' /> {{ task }}
% end
{{ task }}
<a class="remove" href="/api/delete/{{ task.uid }}">X</a>
<hr/>
</li>
% end
</ul>
<!--<form id="todo-add">
<input type="text" id="new-todo-description" class="form-control"/>
<button class="add" type="submit">+</button>
</form>-->
<form action="/add-task" method="post">
<input type="text" name="description"/>
<button type="submit">+</button>
</form>
</div>
</body>
</html>
## server.py
from bottle import route, run, static_file, view, redirect, request
class TodoItem:
def __init__(self, description, unique_id):
self.description = description
self.is_completed = False
self.uid = unique_id
def __str__(self):
return self.description.lower()
tasks_db = {
1: TodoItem("прочитать книгу", 1),
2: TodoItem("учиться жонглировать 30 минут", 2),
3: TodoItem("помыть посуду", 3),
4: TodoItem("поесть", 4),
}
###
@route("/static/<filename:path>")
def send_static(filename):
return static_file(filename, root="static")
@route("/")
@view("index")
def index():
tasks = tasks_db.values()
return {"tasks": tasks}
@route("/api/delete/<uid:int>")
def api_delete(uid):
tasks_db.pop(uid)
return redirect("/")
@route("/api/complete/<uid:int>")
def api_complete(uid):
tasks_db[uid].is_completed = True
return "Ok"
@route("/add-task", method="POST")
def add_task():
desc = request.POST.description.strip()
if len(desc) > 0:
new_uid = max(tasks_db.keys()) + 1
t = TodoItem(desc, new_uid)
tasks_db[new_uid] = t
return redirect("/")
###
run(host="127.0.0.1", port=8080)
src="https://code.jquery.com/jquery-3.4.1.slim.min.js"