我在jquery ui模式对话框中有一个表单,当我单击提交按钮时没有任何反应。有没有办法在jquery模式对话框中提交表单而无需在javascript中编写按钮?
这是我的代码段;
<script>
// increase the default animation speed to exaggerate the effect
$(function() {
$( "#dialog" ).dialog({
autoOpen: false,
draggable: false,
resizable: false,
modal: true,
});
$( "#opener" ).click(function() {
$( "#dialog" ).dialog( "open" );
return false;
});
});
function SetValues()
{
var s = 'X=' + window.event.clientX + ' Y=' + window.event.clientY ;
document.getElementById('divCoord').innerText = s;
}
</script>
<div id="dialog" title="new task">
<form method="post" action="/projects/{{ project.slug }}/">
<div class="form-row">
<label class="required" for="title">task type</label>
<select name="type">
{% for TaskType in project.tasktype_set.all %}
<option value="{{ TaskType.name }}">{{ TaskType.name }}</option>
{% endfor %}
</select>
</div>
<div id="buttons">
<input type="submit" value="create"/>
</div>
</form>
</div>
<button id="opener">new task</button>
如果我删除“modal:true”,使对话非模态,则会提交。
答案 0 :(得分:6)
您可以在对话框中使用$ .post()或$ .ajax(),例如:
$( "#dialog" ).dialog({
autoOpen: false,
draggable: false,
resizable: false,
modal: true,
buttons: {
"Save": function() {
var type = $("#type option:selected").val();
$.post("/projects/{{project.slug}}/", {type:type}, function(data) {
alert(data);// ---> data is what you return from the server
}, 'html');
},
"Close": function(){
$(this).dialog('close');
}
}
});
只需给你的select标签一个id ......就可以更轻松地提取值了。也摆脱了输入按钮,因为现在你将从对话框中保存按钮。
答案 1 :(得分:2)
您必须将对话框移回表单。在创建对话框后执行此操作。喜欢:
$("#dialog").parent().appendTo($("form:first"));
更新: 为什么您的表单包含在对话框中?你有两种形式吗?尝试将表单移动为容器。以下是我认为应该有效的完整代码:
<script>
// increase the default animation speed to exaggerate the effect
$(function() {
$( "#dialog" ).dialog({
autoOpen: false,
draggable: false,
resizable: false,
modal: true,
});
$("#dialog").parent().appendTo($("form:first"));
$( "#opener" ).click(function() {
$( "#dialog" ).dialog( "open" );
return false;
});
});
function SetValues()
{
var s = 'X=' + window.event.clientX + ' Y=' + window.event.clientY ;
document.getElementById('divCoord').innerText = s;
}
</script>
<form id="form1" method="post" action="/projects/{{ project.slug }}/">
<div id="dialog" title="new task">
<div class="form-row">
<label class="required" for="title">task type</label>
<select name="type">
{% for TaskType in project.tasktype_set.all %}
<option value="{{ TaskType.name }}">{{ TaskType.name }}</option>
{% endfor %}
</select>
</div>
<div id="buttons">
<input type="submit" value="create"/>
</div>
</div>
</form>
<button id="opener">new task</button>