将POST方法集成到动态创建的表单中
Integrate POST method into dynamically created form
我正在创建一个GUI,其中包含一个将对象插入div的窗体,然后将类应用到它,从而在屏幕上为它设置动画。然而,按照我的设置方式,每当我选择类并应用它并点击提交按钮时,它似乎会刷新整个页面。我知道这与使用POST方法有关,但我不确定是怎么回事。这是我的JS:
////////////////////////////////////////////////////////////////////////////////////////////////////////ADD A SPRITE
var spriteId = 1;
$(".add_sprite").click(function() {
$("<div />", { "class":"sprite_container", id:"sprite_container"+spriteId })
.append($("<div />", { "class":"sprite" , id:"sprite"+spriteId }))
.appendTo("#divMain");
spriteId++;
});
////////////////////////////////////////////////////////////////////////////////////////////////////////ADD SPRITE CONTROLS
var controlsId = 1;
$(".add_sprite").click(function() {
$("<form />", { "class":"sprite_controls", id:"sprite_controls"+controlsId })
//Sprite Name
.append($("<input />", {"class":"sprite_name", type: "text", value: "Name It", id:"name"+controlsId }))
//Sprite Animation A
.append($("<select/>", { "class":"sprite_animationA", id:"animationA"+controlsId })
.append($("<option />", { value:"Animate It"})
.append("Animate It")
)
.append($("<option />", { value:"Pulse"})
.append("Pulse")
)
.append($("<option />", { value:"Star"})
.append("Star")
)
.append($("<option />", { value:"Square"})
.append("Square")
)
)
.append($("<button/>", { "class":"run_it", id:"run_it"+controlsId })
.append("Run It")
)
.appendTo("#controls");
controlsId++;
});
////////////////////////////////////////////////////////////////////////////////////////////////////////APPLY ANIMATIONS TO SPRITE 1
//$('#sprite_controls1').submit(applyAnimA1);
//$('#run_it1').off().click(function() {$('#sprite_controls1').submit();});
// function applyAnimA1() {
$('#run_it1').click(function (e) {
var animA1 = $('#animationA1');
e.preventDefault();
if (animA1.val() == 'Pulse'){
$("#sprite_container1").addClass("pulse");
}
else if (animA1.val() == 'Star'){
$("#sprite_container1").addClass("star");
}
else if (animA1.val() == 'Square'){
$("#sprite_container1").addClass("square");
}
else{
}
//}
});
这里有一个JS小提琴:http://jsfiddle.net/2vazw/
如有任何帮助,将不胜感激
我对您的代码做了一些更改,以提高工作效率。
首先,我使用了事件委派,这意味着在执行过程中不需要再添加任何侦听器。事件传播到表单,然后识别单击的按钮并处理事件。
$('#formContainer').delegate('button','click',function (e) {
...
然后我得到选定的动画和索引,从那里你可以做任何你想做的事。
表单与其他页面元素分离,并且只有一个表单,而不是每个sprite
一个表单。
顺便说一句,如果我自己做,我会通过创建一个animator类来将"后端"(即驱动动画师的代码)的逻辑表示与附带的UI分离,该类可以实例化并从头开始创建整个界面,并且是可重用和自包含的。
请参阅此处的示例。
相关文章:
- 谷歌浏览器模式正则表达式在使用setCustomValidity动态创建表单时不起作用
- 动态或静态地创建表单
- 如何创建表单输入框的id
- 使用javascript创建表单并将输入带回php
- 从JSON模式创建表单,如何添加关闭按钮
- 如何从json模式创建表单
- 在不同的模型中获取模型id会在主干中创建表单
- 如何创建表单元素输入框,标签使用javascript onclick
- 动态创建表单轨道
- 使用 Javascript 创建表单
- 根据Google Apps Script中的答案创建表单问题
- 使用 jQuery 创建表单形式的查询字符串不起作用
- 如何使用 angularjs 动态创建表单
- 如何创建表单以生成 URL
- 如何为请愿书创建表单
- 当我单击编辑表单时,角度自动填充创建表单的问题
- 如何使用javascript动态创建表单标记
- 如何使用DOM元素创建表单的副本
- AJAX在更改时创建表单/表
- 使用AJAX/jQuery动态创建表单时多次提交