我第一次尝试在 jQuery-ui 选项卡中使用jQuery 表单插件。我可以将表单加载到选项卡中并提交表单。请求成功通过,数据按计划添加到数据库中。当它重定向到表单的干净版本时,HTML 再次放入选项卡中,但我收到一个 javascript 错误:$ is not defined
引用表单页面上首次使用 jQuery 的行。
我假设有某种我还没有发现的魔法。如果它第一次工作,它应该工作第二次,不是吗?
这就是我现在正在做的事情:
我的表格
<div id="new-shift" class="${type.name}">
<h2 id="crudBlankTitle">&{'crud.blank.title', type.modelName}</h2>
<div class="objectForm">
#{form action:@create(), id: 'new-shift-form', enctype:'multipart/form-data'}
#{crud.form /}
<p class="crudButtons">
<input type="submit" name="_save" value="&{'crud.save', type.modelName}" />
<input type="submit" name="_saveAndAddAnother" value="&{'crud.saveAndAddAnother', type.modelName}" />
</p>
#{/form}
</div>
</div>
通过 ajax 加载到 jQuery-ui tabs 元素中
<div id="tabs">
<ul>
<li>#{a @Shifts.blank()}<span>New Shift</span>#{/a}</li>
<!-- above line renders as
<li><a href="/shifts/new"><span>New Shift</span></a></li>
-->
</ul>
</div>
并且一旦加载,就会应用表单插件
<script>
$(function() {
var tabs = $("#tabs");
tabs.tabs({
load: function (event, ui) {
$('#new-shift-form').ajaxForm({
target: '#new-shift'
});
}
});
});
</script>
更新:我现在也试过了ajaxSubmit
,但结果是一样的。第二次加载时“$ 未定义”。使用live
而不是在加载时应用表单插件也无济于事。我真的不知道下一步该尝试什么。
$('#new-shift-form').live("submit", function() {
$(this).ajaxSubmit({
target: '#new-shift',
clearForm: true,
replaceTarget: true
});
return false;
});