Я хотел бы использовать плагины jQuery.Form/Validate, чтобы разрешить отправку моей формы только в том случае, если какие-либо входные данные были фактически изменены.
Для этого существует логика обратного вызова с использованием beforeSubmit:
: http://jquery.malsup.com/form/#options-object. Тем не менее, я не могу заставить его работать.
Вот что у меня есть до сих пор:
$(document.body).on('click', 'input[type="submit"]', function(){
var $form =$('form');
$form.validate({
submitHandler: function($form) {
$($form).ajaxSubmit({
beforeSubmit: function(arr, $form){
var value = '', storedValue='';
$($form+':input').each(function (index, el) {
value=$(el).val();
storedValue=$(el).data("stored");
if(value!=storedValue){
console.log("Changed"); return true;
}
else {
return false; console.log("NOT changed");
}
});
...success handling, etc..
beforeSubmit: function(arr, $form) {
var value = '', storedValue='';
$($form+':input').each(function (index, this) {
value=this.value;
storedValue=$(this).data("stored");
if(value!=storedValue){
console.log("Changed");return true;
}
else {
return false; console.log("NOT changed");
}
});
}
Вот HTML:
<form id="myForm">
<input data-stored="my title" value="my title"/>
<textarea data-stored="my description">my description</textarea>
<input type="submit" value="submit/>
</form>
В настоящее время console.log показывает "Changed"
независимо от того, равно ли storedValue
входным данным или нет.
submitHandler:
внутри функцииvalidate({...
или нет. В любом случае спасибо за подсказку! - person tim peterson   schedule 11.06.2012submitHandler
... это то, что вы не должны заключать.validate()
в обработчик. Потому что.validate()
инициализирует проверку формы при загрузке страницы. Но когда он находится внутри обработчика, параметры проверки инициализируются только при запуске этого обработчика событий, что приводит к странным и неожиданным результатам. - person Sparky   schedule 11.06.2012submitHandler:
, заключающееvalidate()
. Должен ли я реорганизовать его по-другому? - person tim peterson   schedule 11.06.2012validate()
. Но включениеvalidate()
в обработчик приводит к неправильной инициализации проверки. См. здесь, здесь и здесь. - person Sparky   schedule 11.06.2012ready
. Вы редко видите подключаемые модули инициализации jQuery, заключенные в обработчик. Таким же образом относитесь к инициализации плагина.validate()
. Вот почему у него есть встроенное событиеsubmitHandler
. - person Sparky   schedule 11.06.2012validate()
при загрузке страницы, а не внутри функцииon() click
? Я обернул проверку внутри события клика, потому что часто у меня много форм на странице, и мне нужно собирать данные в зависимости от того, что выбирает пользователь (например, предоставление определенной формы вводаon() click
. Мысли? - person tim peterson   schedule 11.06.2012validate()
? - person tim peterson   schedule 11.06.2012success:
и т. д. Есть ли ссылка на это? - person tim peterson   schedule 11.06.2012validate
просматривает форму и ее входные данные всякий раз, когда пользователь нажимает кнопку отправки. Поскольку мне не совсем понятен ваш конкретный вопрос, и это не место для расширенного обсуждения, я призываю вас опубликовать новый вопрос об этом конкретном аспекте. - person Sparky   schedule 11.06.2012