jquery validate form.submit () действует странно - PullRequest
1 голос
/ 20 мая 2011

Я использую плагин проверки JQuery для проверки формы. Проверка происходит и запускается submitHandler. Но тогда я получаю эту ошибку (из IE8):

Сведения об ошибке веб-страницы

Пользовательский агент: Mozilla / 4.0 (совместимый; MSIE 8.0; Windows NT 5.1; Trident / 4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET4.0C; .NET4.0E) Отметка времени: пт, 20 мая 2011 г. 16:30:56 UTC

Сообщение: объект не поддерживает это свойство или метод

В Firefox работает как надо - ошибок нет вообще. Есть идеи, почему метод form.submit () не работает?

JQuery

$(document).ready(function() {
    $.validator.addClassRules('valcount',{digits: true, min: 1});

    //Fish Form
    $("form[name='fish']").validate({
        debug: true,
        ignore: ":hidden,[name='']", // do not validate form fields in invisible sections
        errorPlacement: function(error, element) {
            if ( element.is(":radio") ) {
                error.appendTo( element.parent().next().next() );
            }else if(element.is(":checkbox") && element.parent().is('li')){
                error.insertBefore(element.closest("ul.horiz"));
            }else{
                error.appendTo(element.parent());
            };
        },
        rules: {
            fish_name: {required:true, minlength:5},
            care_id: {required: true, digits: true, min: 1},
            strain_id: {required: true, digits: true, min: 1},
            transgene_id: {digits: true, min: 0}
        },
        // set this class to error-labels to indicate valid fields
        success: function(label) { // set   as text for IE
            label.html(" ").addClass("checked");
        },          
        submitHandler: function(form){
            if(confirm('Are you sure?'))form.submit(); //PROBLEM var has no such method
        }
    });

});// end $(document).ready(function(){

Форма HTML

<form action='http://example.com' method='post' name='fish' id='fish'>
        <input name='fish_id' type="hidden" value="39" >

        <div><label for='fish_name'>Fish Name</label><input name='fish_name' id='fish_name' type='text' value='110208'></div>
        <div><label for='fishnotes'>Notes</label><textarea name='notes' id=fishnotes></textarea></div>
        <div><label for='care_id'>Animal Care Protocol</label><select name='care_id' id='care_id'><option value='1' selected="selected">Breeding Colony</option>
</select></div>
        <div><label for='strain_id'>Strain</label><select name='strain_id' id='strain_id'><option value='1' selected="selected">AB wt</option>
<option value='2' >Tub wt</option>
<option value='14' >AB/Tub</option>
<option value='15' >AB/Tub deadhead</option>
<option value='16' >Casper</option>
</select></div>
        <div><label for='transgene_id'>Transgene</label><select name='transgene_id' id='transgene_id'><option value=0>None</options><option value='1' >Ztag</option>
<option value='2' >KDR-eGFP</option>
<option value='3' >BTIAR-eGFP</option>
<option value='4' >BTIA-eGFP</option>
<option value='5' >BTTP3.1-eGFP</option>
<option value='6' >BTTP6.2-eGFP</option>
<option value='7' >BTIAR-Luc</option>
<option value='8' >BTIA-Luc</option>
<option value='9' >BTTP3.1-Luc</option>
<option value='10' >BTTP6.2-Luc</option>
<option value='11' >Tg(hsp70tolgfp)v28</option>
<option value='16' >blither</option>
</select></div>

<div><input value='Edit' type='submit' ></div>
</form>

Отредактировано: удалено имя и идентификатор отправки, добавлена ​​информация о FF. Пробовал с $(form).submit() вместо form.submit(). Все еще нет радости.

Ответы [ 2 ]

3 голосов
/ 20 мая 2011
<input name='submit' id='submitfish' value='Edit' type='submit' >

Вы не можете имя кнопку отправки "отправить" .Когда вы делаете это и вызываете form.submit () в MSIE, MSIE думает, что вы пытаетесь сослаться на входной объект, который «не поддерживает это свойство или метод».

Помните, что в jQuery, $ (this) является объектом jQuery, а this является фактическим элементом DOM.Итак,

submitHandler: function(form){

Обработчик отправки передает форму как элемент DOM, поэтому здесь происходит ошибка form.submit ().

0 голосов
/ 25 мая 2011

Оказывается, проблема в конфликте между jquery 1.6.x и плагином validate 1.8.x. Когда я вернулся к JQuery 1.5, проблема ушла. Это не очень хорошее решение, но, надеюсь, это спасет кого-то от царапин на голове.

ETA: похоже, что проверенная версия 1.8.1, выпущенная недавно, тоже исправит эту проблему. Обратите внимание, что по состоянию на 24 мая 1.8.0 является версией, размещенной на http://ajax.aspnetcdn.com/ajax/jquery.validate/1.8/jquery.validate.min.js

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