1
我的用户界面包含一个组合框,用于显示表单的类型。然后使用ajax提交表单。回调显示整个表单和其他信息。问题是第一次提交工作,但第二次提交没有考虑到表单字段中所做的更改。jQuery如何将事件附加到新创建的对象
- 在列表中选择Form1中
- Form1中显示有空白字段
- 用户填写表格并提交
- Form1中与来自用户的信息以及其他信息再次显示
- 用户更改字段值并提交,但提交旧数据。
我的当前的jQuery(I使用jQuery Form plugin):
$(document).ready(function() {
// do stuff when DOM is ready
var testCaseList = $('#testCaseId');
testCaseList.live('change', function() {
$.ajax({
url: 'populateSteps.htm',
type: 'GET',
data: 'testCaseId=' + $(this).val(),
success: function(data){
$('#formContainer').html(data);
var formId = $('#testCaseForm');
var validateButton = $('#validateButton');
validateButton.live('click', function() {
// prepare Options Object
var options = {
url: 'validateTestCase.htm',
success: function(data) {
$('#formContainer').html(data);
}
};
// pass options to ajaxForm
alert(formId.formSerialize());
formId.ajaxSubmit(options);
});
}
});
});
});
基本上在组合框中改变值后,则显示形式和点击事件被附接到形式按钮。点击只提交表单。
我使用live方法来附加事件,因为每次提交后都会显示表单。我知道这不是AJAX,但我必须这样做,因为Spring处理不好部分形式。
我可以做更好的工作,将事件附加到新创建的表单使用绑定,但我不知道我应该把代码放在哪里。该表单使用JSP显示,并且我尝试将
HTML/JSP code ... <script type="text/javascript">
$(document).ready(function() {
// Attach the event to the form
} </script>
之后的JSP代码但脚本未执行。
编辑该脚本未执行,因为我的脚本是错误的:缺少);
<script type="text/javascript">
$(document).ready(function() {
// Attach the event to the form
});
</script>
现在,它的工作,但我仍然不知道为什么live
结合使用表单中的旧数据。
有什么用`live`区别? – Sydney 2011-02-07 17:37:45