2013-08-13 4 views
0

Я использую JQuery проверки, с помощью этого кода:Pass параметр формы для дочернего объекта в проверке JQuery

$("#demo").validate({ 
    rules : { 
    password : { required : true, }, 
    password2 : { required : true, }, 
    }, 
    messages: { 
    password : { required: "This field is required.",}, 
    password2 : { required: "This field is required.",}, 
    }, 
    submitHandler: function(form) { 
    $("#dialog-confirm").dialog({ 
     autoOpen: true, 
     resizable: false, 
     height:250, 
     width:500, 
     modal: true, 
     buttons: { 
     OK : function(form) { 
      form.submit(); 
     } 
     } 
    }); 
    }, 
}); 

То, что я пытаюсь сделать, это передать form от submitHandler функции собирается объекта кнопки функция. После того, как они нажмете OK, они будут отправлены в форму.

+0

Передача этого внутреннего параметра не является проблемой; 'form' просто представляет' $ («# demo») ', поэтому вместо этого используйте' $ («# demo»). – Sparky

ответ

0

для того, чтобы JQuery, чтобы отправить форму после того, как «OK» нажата, вы должны построить свою форму следующим образом:

<form id="demo" method="post" action=""> 
    <input type="text" name="password" /> 
    <input type="text" name="password2" /> 

    <div id="dialog-confirm" title="Success"> Thank you, success message</div> 

    <input type="submit" name="submit" value="Submit" /> 
</form> 

Это позволяет распознать кнопку «OK» с помощью проверки jQuery. Обратите внимание, что диалоговое окно должно быть внутри формы перед кнопкой отправки.

+1

Невозможно, чтобы кто-либо еще разрешил это, не увидев вашу разметку HTML. – Sparky

+0

Хотя это правда, я бы не знал, что проблема связана с моей разметкой html. –

+0

Независимо от этого, вам не обязательно знать, что проблема заключается в разметке, так как она должна была быть включена все время. Без вашей разметки мы ничего не можем воспроизвести. Точка, согласно частому FAQ этого сайта, включает достаточно кода для создания краткой демонстрации. Также см .: http://sscce.org – Sparky

0

Удалите параметр form с помощью обработчика кнопки «ОК». Вы затеняете параметр form от submitHandler.

+0

Но проблема требует использования «Ok» для отправки. –

+0

Это нормально, я не говорю, чтобы удалить кнопку «ОК» или ее обработчик. Я просто говорю, что вам нужно удалить аргумент 'form', который передается обработчику кнопки« Ok », потому что он скрывает аргумент' form', который передается функции 'submitHandler'. Аргумент 'form' в обработчике кнопки« Ok », вероятно, будет иметь значение« null »или« undefined », так как я не считаю, что обработчики кнопок передаются как аргументы с помощью диалогового плагина jQuery. http://api.jqueryui.com/dialog/#option-buttons – asymptoticFault

+0

Просто полезная информация: параметр 'form', похоже, успешно передал значение' submitHandler' (но только если диалог находится внутри «форма»). –

1

В плагине jQuery Validate параметр form просто представляет ваш объект form. В этом случае form представляет ту же самую вещь, что и $("#demo"). Поскольку вы пытаетесь использовать его в методе .dialog(), form может не распознаваться.

Просто увидеть, если это работает лучше ...

submitHandler: function(form) { 
    $("#dialog-confirm").dialog({ 
     autoOpen: true, 
     resizable: false, 
     height:250, 
     width:500, 
     modal: true, 
     buttons: { 
      OK : function() { 
       $("#demo").submit(); 
      } 
     } 
    }); 
} 
+0

Я вижу, в чем проблема. Форма не распознает кнопку «ОК», потому что '

' не был внутри формы. Это означает, что '
' должен находиться внутри формы с именем '# demo', чтобы кнопка« ОК »работала и отправляла форму. –

+0

@FranzNoel, еще одна причина, почему так важно включать весь соответствующий код, включая разметку HTML. – Sparky

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