取消要提交的表单,不更改实体的数据
Cancel a form to be submitted, do not change the data of the entity
我有一个div
<div id="updateChoice%s" class="text-center"></div>
显示了以下内容当点击"updateText"按钮时
function updateText(urlsafe) {
document.getElementById("updateChoice"+urlsafe).innerHTML +=
'<br><br><form id="dynForm" action="/updateText" method="post" >' +
'<textarea name="newContent" rows="5" cols="80"></textarea>' +
'<input type="hidden" name="update" value=' + urlsafe + '>' + '<br><br>' +
'<input class="choice" type="submit" value="Submit"></input> <button class="choice" onclick="cancelUpdate('+ urlsafe +')">Cancel</button>' +
'</form>';
}
我想取消文本的更新,但它不工作,除非"newContent"是空的,这里是/updateText文件和cancelUpdate(urlsafe)
/updateText:
class UpdateText(webapp2.RequestHandler):
def post(self):
greeting_key = ndb.Key(urlsafe=self.request.get('update'))
event = greeting_key.get();
if(self.request.get('newContent') != ''):
event.content = self.request.get('newContent');
event.put();
self.redirect('/events');
cancelUpdate (urlsafe):
function cancelUpdate(urlsafe) {
document.getElementByName("newContent").innerHTML="";
document.getElementById("dynForm").submit();
}
任何想法?
/updateText处理程序保持不更新文本,如果在提交时它是空的,所以不要改变任何东西:
在cancelUpdate(urlsafe)函数中,使用如下方法:function cancelUpdate(urlsafe) {
document.getElementById("updateChoice"+urlsafe).innerHTML = "";
}
在传递参数urlsafe时添加'',而不是"。所以这里是正确的javascript函数调用div#updateChoice%s是:
function updateText(urlsafe) {
document.getElementById("updateChoice"+urlsafe).innerHTML =
'<br><br><form id="dynForm" action="/updateText" method="post" >' +
'<textarea name="newContent" rows="5" cols="80"></textarea>' +
'<input type="hidden" name="update" value=' + urlsafe + '>' + '<br><br>' +
'<input class="choice" type="submit" value="Submit"></input><button type="button" class="choice" onClick="cancelUpdate('''+ urlsafe +''')">Cancel</button>' +
'</form>';
}
你的问题很难理解(你说的"cancel the update of text"是什么意思?你以为会发生什么?到底是什么"不起作用"?)
此外,您提供的代码存在多个问题(其中没有一个必须与GAE, Python或webapp2做任何事情),这里有一些可能有助于解决您的问题:1)你的cancelUpdate
函数接受一个urlsafe
参数,但没有使用它。
2)在您的cancelUpdate
函数中,您使用的是不存在的函数getElementByName
,您可能打算使用其复数版本getElementsByName()
3)
在同一
document.getElementByName("newContent").innerHTML="";
行上,您正在检索名称为newContent
的元素,这是<textarea>
元素,并试图清空其innerHTML
属性,但<textarea>
没有。如果你想清空<textarea>
的内容-你需要做document.getElementByName("newContent").value="";
代替。由于您的
cancelUpdate
函数有一个未使用的参数urlsafe
,虽然不清楚您的问题是什么,但由于在您的updateText
函数中,您正在创建一个具有id="updateChoice"+urlsafe
的元素,并假设当您点击取消时-您还想破坏该形式,那么您的cancelUpdate
看起来就像这样简单:
,
function cancelUpdate(urlsafe) {
document.getElementById("updateChoice"+urlsafe).innerHTML = "";
}
4)
你的"取消"按钮没有指定
type
,这意味着即使你不想提交表单,它也会默认为submit
,所以你需要添加type="button"
来阻止提交。您正在调用
cancelUpdate
函数中的document.getElementById("dynForm").submit();
,该函数与前一个问题结合将提交您的表单两次。
- 用程序搜索JQuery数据表中的文本
- 要求输入在数据列表中
- 正在将数据主题添加到所有项目
- 函数参数中的数据与指定变量之间的任何性能差异
- 在VanillaJS中模拟模型双向数据绑定
- CSS-如何定位内容数据标题
- 使用电话间隙在Android应用程序中显示SQL Lite的数据
- 无法在数据endVal中设置值=“”;{{ucount}}”;使用Angular JS的CountUp
- 序列化数据属性中对象的最可靠方法
- 如何将JSON数据导入我的ejs模板
- 加载具有相关数据的实体时出现 Breezejs 错误
- 来自实体框架的数据显示在javascript/Jquery对话框中
- 我如何从微风的元数据收集排除表/实体
- 基于实体属性值创建数据网格
- 取消要提交的表单,不更改实体的数据
- 如何在不使用EF的情况下向实体添加上下文元数据?
- 我如何在2个实体管理器之间共享元数据
- 如何使用 AngularJS 在模态中显示实体的数据
- Dynamics CRM根据父表单/实体在新表单/实体中填充关系数据
- 组件实体系统实体特定数据