Проверка Jquery не работает после очистки формы - PullRequest
0 голосов
/ 24 января 2011

Я применил проверку через плагин проверки JQuery на моей странице.Проверка работает нормально, но когда нажата кнопка Clear, чтобы очистить все поля формы, а затем снова нажата кнопка сохранения, проверка не запускается, и форма отправляется.Я вызвал следующую функцию javascript при нажатии кнопки Clear, чтобы очистить все поля формы: -

function ResetForm() {
            jQuery(':input', '#form1')
                .not(':button, :submit, :reset, :hidden')
                .val('')
                .removeAttr('checked')
                .removeAttr('selected');
            return false;
        }

Кнопка Clear находится на ChildPage, а функция ResetForm - на MasterPage,Кто-нибудь догадывается, почему его отправляют после очистки полей?

Ответы [ 3 ]

2 голосов
/ 24 января 2011

input - это элемент, а не атрибут или псевдоселект. Основная проблема, которую я вижу в вашем коде, это : в :input

. Попробуйте выбрать jQuery('#form1 input'), чтобы получить список.of

Также измените команду not(), чтобы выбрать фильтрацию входов по типу

.not('[type="button"], [type="submit"], [type="reset"], [type="hidden"]')

, также как и для :hidden, есть несколько факторов, которые вы должны знать об этом.

  • У них значение CSS для отображения отсутствует.
  • Это элементы формы с type = "hidden".
  • Их ширина и высота явно установлены на 0.
  • Элемент-предок скрыт, поэтому элемент не отображается на странице.

В свете вашего комментария, пожалуйста, попробуйте эту проверенную версию:

function resetForm()
{
    $("#form1").find(':input').each(function()
    {
        var jelem = $(this);
        switch(this.type)
        {
            case 'password':
            case 'select-multiple':
            case 'select-one':
            case 'text':
            case 'textarea':
                jelem.val('');
                break;
            case 'checkbox':
            case 'radio':
                jelem.attr('checked',false);
        }
    });
}

@ source: http://www.electrictoolbox.com/jquery-clear-form/

Еще один способ сделать это - создать скрытый ввод в форме, но установить тип как reset, например, так:

<input type="reset" style="display:none" />

, а затем выполнить:

function resetForm()
{
    $("#form1[type='reset']").click();
}
2 голосов
/ 01 февраля 2011

На самом деле ошибка была чем-то другим, код, предоставленный RobertPitt, корректен для очистки полей формы, и мой код также был корректен для очистки полей формы. Но проблема в том, что к кнопке clear я применил class="cancel", чтобы форма не отправлялась, потому что это была aspx:button.

Но в соответствии с тем, что написано в документации JQuery, нажатие кнопки, класс которой cancel, должно пропустить проверку, но после этого, если я нажму на обычную submit проверку кнопки, должна сработать, которая не запускалась в моем случай.

Я только что удалил класс cancel, и он сработал.

0 голосов
/ 24 января 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...