2013-03-10 4 views
1

This question был задан, но ответ не был подтвержден. Я попробовал, но это не сработало. Поэтому я хотел бы снова задать тот же вопрос (это подходит? Если нет, пожалуйста, сообщите мне, что делать).jQuery: как включить проверку в функцию ajaxForm?

У меня есть форма, которая должна быть проверена, а затем отправлена ​​с помощью ajaxForm (форма содержит изображения и данные файла, поэтому отправка с .serialize() не будет работать). Ниже приведены детали:

HTML:

<form id="myForm" action="..." method="post" enctype="multipart/form-data"> 
    ... 
    <input type="file" name="image" /><br /> 
    <input type="file" name="file" /><br /> 
    ... 
</form> 

JQuery:

$(document).ready(function() { 

    $("#myForm").ajaxForm ({ 

    beforeSubmit: function() { 
     $("#myForm").validate({ 
     onkeyup:false, 
     rules: { 
      ... 
     }, 
     messages: { 
      ... 
     }, 
     }); 
    }, 

    success: function(returnData) { 
     $('#content').html(returnData); 
    } 

    }); 

}); 

ajaxForm часть OK. Но форма просто передается без проверки.

ответ

3

.validate() is used for initializing the plugin on DOM ready, так тянуть, что вне другой функции.

Инициализировать два плагинов в пределах DOM готов, а затем использовать любую соответствующую встроенные функции обратного вызова ...

Вам не нужно будет беспокоиться о создании какого-либо новый submit обработчика или click обработчика функций, так как плагины уже автоматически захватить submit события.

Работа DEMO: http://jsfiddle.net/MF26D/

Перестановка код в нечто вроде этого:

$(document).ready(function() { 

    $("#myForm").validate({ // initialize the plugin 
     // any other options, 
     onkeyup: false, 
     rules: { 
      //... 
     }, 
     messages: { 
      //... 
     } 
    }); 

    $("#myForm").ajaxForm({ // initialize the plugin 
     // any other options, 
     beforeSubmit: function() { 
      return $("#myForm").valid(); // TRUE when form is valid, FALSE will cancel submit 
     }, 
     success: function (returnData) { 
      $('#content').html(returnData); 
     } 
    }); 

}); 
+1

Wow! Спасибо, миллион, Спарки. Ты спас мне жизнь. –

1

попробовать это

$(document).ready(function() { 

     $("#myForm").ajaxForm ({ 

     beforeSubmit: function() { 
      if (!$("#myform").valid()) 
        return; 
     }, 

     success: function(returnData) { 
      $('#content').html(returnData); 
     } 

     }); 

    }); 
+0

Это, кажется, очень похож на оригинальное решение. Как организовать функцию '.valid()'? –

+0

Он работает на u – PSR

1

Может вызвать форму плагин внутри обработчика представить:

$("#myForm").submit(function(e){ 
    e.preventaDefault(); 

    var isValid=/* run your validation code that determines true or false*/ 

    if(isValid){ 
    $(this).ajaxForm({/* plugin options*/}) 
    } 

}) 
+0

Извините, я не очень хорошо знаком с jQuery. Как установить значение переменной 'isValid' функцией' validation() '? Благодарю. –

+0

Вы используете плагин для проверки? Если да, то какой плагин (укажите ссылку на документы). – charlietfl

+0

Я думаю, что вам не хватает '(function' рядом с' .submit'. – Sparky

Смежные вопросы