Here is my form HTML & JavaScript Code that I want to click on the submit then run function ExportPublication()
:
<form onsubmit="ExportPublication()" class="form-horizontal" id="frmExportPublication" name="frmExportPublication" >
<div class="control-group">
<label class="control-label" for="inputPassword">email Pa</label>
<div class="controls">
<textarea name="emailBody" class="input-xlarge">file</textarea>
</div>
</div>
<input type="submit" class="btn btn-primary" id="ExportPublicationButton" projectid="" value="submit">
</form>
<script>
function ExportPublication() {
$.ajax({
url: '@Url.Action("CreateOutput", "Publication", new { area = "Cartable" })',
data: $("#frmExportPublication").serialize(),
type: 'POST',
beforeSend: function () {
ajaxWaiting.showWaiting();
},
success: function () {
$("#message").show();
ajaxWaiting.hideWaiting();
$('#ExportPublication').modal('hide');
},
error: function (req, status, error) {
ajaxWaiting.hideWaiting();
}
});
}
</script>
When I click on submit, function is not working. How can I correct this?
Your function should be like this:
function ExportPublication() {
event.preventDefault();
$.ajax({
url: '@Url.Action("CreateOutput", "Publication", new { area = "Cartable" })',
data: $("#frmExportPublication").serialize(),
type: 'POST',
beforeSend: function () {
ajaxWaiting.showWaiting();
},
success: function () {
$("#message").show();
ajaxWaiting.hideWaiting();
$('#ExportPublication').modal('hide');
},
error: function (req, status, error) {
ajaxWaiting.hideWaiting();
}
});
return false;
}
Also in form onsubmit function should return a value.. ie;
<form onsubmit="return ExportPublication()" class="form-horizontal" id="frmExportPublication" name="frmExportPublication" >
Instead of
<form onsubmit="ExportPublication()" class="form-horizontal" id="frmExportPublication" name="frmExportPublication" >
if you can try binding the listener via javascript like below, works like a charm !
document.forms.frmExportPublication.onsubmit = ExportPublication;
fiddle , have removed ur ajax calls from fiddle for brevity.