preventDefault()无法在('submit')函数上使用

时间:2018-11-15 15:24:32

标签: javascript ajax form-submit preventdefault

我有此代码:

<form action="/example/call/to/api" id="myId" enctype="multipart/form-data"  method="post">

在外部.js文件中,我已完成此功能:

$('#myId').on('submit',(function(e) {
  e.preventDefault();
    $.post("URL"+$(this).attr('action'), function(c) {
      var objJson = $.parseJSON(c);
      var url = objJson[0].url;
      $.ajax({
        ('#myId').on('submit',(function(e) {
           e.preventDefault();
           $.ajax({
             type:'POST',
             url: url,
             data:formData,
             cache:false,
             contentType: false,
             processData: false,
             xhr: function () {
             //some code here,      
             success:function(html){
             //some code here 

问题是我不需要重定向,但是现在提交表单时,我总是在/ example / call / to / api上重定向:/为什么在这种情况下preventDefault无法起作用?

该呼叫有效,问题在于“ preventDefault”不起作用!

已解决,我只是具有指向相同ID的相同功能,以发出不同的请求(通过每个表单中的操作)。 只需将每个动作的功能和所有功能分开! 该函数仅在代码中使用第一个ID,而忽略所有其他ID。

2 个答案:

答案 0 :(得分:0)

您在('#myId')之前忘记了$或jQuery,在提交处理程序函数之前还有一个额外的(

$('#myId').on('submit', function(e) {
 e.preventDefault();
 $.ajax({
 type:'POST',
 url: url,
 data:formData,
 cache:false,
 contentType: false,
 processData: false,
 xhr: function () {
 //some code here
 },      
 success:function(html){
 //some code here 
 }
 });

您还需要确保在文档准备就绪时正在运行代码;否则,您的表格将不存在。

$(function(){
  $('#myId').on('submit', function(e) {
  e.preventDefault();
 $.ajax({
 type:'POST',
 url: url,
 data:formData,
 cache:false,
 contentType: false,
 processData: false,
 xhr: function () {
 //some code here
 },      
 success:function(html){
 //some code here 
 }
 });
});

答案 1 :(得分:-1)

您的点击事件必须像这样

('#myId').on('submit', function() {...}

不是('#myId').on('submit', (function() {...})

只需删除函数开始和结束处的(