Форма Firefox отправить вопрос с JQuery - PullRequest
6 голосов
/ 13 марта 2012

Я использую следующий скрипт для отправки формы с помощью jQuery, однако Firefox сгенерировал отчет об ошибке сбоя, пожалуйста, дайте мне знать, что я делаю неправильно.

function teamValidation(){
    var cat_id = $('#cat_id').val();    

    if(cat_id == "0"){
        alert("Category is invalid...");    
        return false;
    }else{
        $('#addForm').submit(); 
        return false;
    }
}

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" 
 name="addForm" id="addForm" onsubmit="return teamValidation();">
 <input type="hidden" name="cat_id" id="cat_id" value="1"/>
</form>

Отчет об ошибке Firefox

enter image description here

В других браузерах работает нормально.

Ответы [ 4 ]

5 голосов
/ 13 марта 2012

Проблема в том, что ваша форма отправляется несколько раз. Вы можете достичь своей цели любым из следующих способов:
HTML:

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" name="addForm" id="addForm">
 <input type="hidden" name="cat_id" id="cat_id" value="1"/>
</form>

JAVASCRIPT:

$('#addForm').submit(function(){
    var cat_id = $('#cat_id').val();    

    if(cat_id == "0"){
        alert("Category is invalid...");    
        return false;
    }else{
        return true;
    }
});

Другой путь:
HTML:

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" name="addForm" id="addForm" onsubmit="return teamValidation();">
     <input type="hidden" name="cat_id" id="cat_id" value="1"/>
    </form>

JAVASCRIPT:

function teamValidation(){
    var cat_id = $('#cat_id').val();    

    if(cat_id == "0"){
        alert("Category is invalid...");    
        return false;
    }else{
       return true;
    }
}
2 голосов
/ 13 марта 2012

У вас есть бесконечный цикл отправки, а затем запрещения отправки вашей формы, когда значение текстового поля cat_id не равно 0. Удалите блок else, поскольку он не служит никакой реальной цели.

Более подробно:

function teamValidation(){
    var cat_id = $('#cat_id').val();    

    if(cat_id == "0"){
        alert("Category is invalid...");    
        return false;
    }else{
        $('#addForm').submit(); // this submits the form again - does NOT proceed with this submission of the form
        return false; // returning false will prevent the submission from being completed
    }
}

<form action="<?php echo SITE_URL; ?>adminteams/saveDetail/" 
 name="addForm" id="addForm" onsubmit="return teamValidation();">
 <input type="hidden" name="cat_id" id="cat_id" value="1"/>
</form>

Когда вы отправляете форму, вызывается teamValidation().Если проверка прошла успешно (выполняется код блока else), вы снова отправляете форму , что вызывает повторный вызов teamValidation() , затем return false, что не позволяет завершить текущую отправку.Firefox, вероятно, дает сбой, потому что он находится в цикле, где постоянно отправляет форму, которую никогда не разрешают завершать;тот факт, что браузер довольно ужасен с точки зрения использования памяти, вероятно, тоже не помогает.

0 голосов
/ 13 марта 2012

Вы пропустили '}' в конце. Тем не менее, это не должно вызывать сбой. 99% проблема с вашей установкой Firefox. Я только что проверил с моим здесь. Работает правильно. Там нет проблем с вашим кодом. Попробуйте удалить и переустановить Firefox.

Еще одно открытие. Ваша форма отправляется на неопределенный срок. Возможно, ваши другие браузеры новее, а ваш Firefox устарел (не способен обрабатывать неопределенные рекурсии, поэтому он может зависать).

В любом случае, попробуйте заменить следующее:

$('#addForm').submit();

с:

document.getElementById("addForm").submit();

Надеюсь, это поможет ..

Мир вам ...

0 голосов
/ 13 марта 2012

Вы забыли закрыть определение функции

function teamValidation(){
    var cat_id = $('#cat_id').val();    

    if(cat_id == "0"){
        alert("Category is invalid...");    
        return false;
    }else{
        $('#addForm').submit(); 
        return false;
    }
} <--- this
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...