Почему javascript завершает работу после оператора jquery remove ()?

0

В настоящее время я работаю с Javascript и JQuery (оба из которых я новичок в этом, так что легко на меня), и цель заключается в том, когда форма заполняется неправильно. Чтобы добавить сообщение, которое говорит, что форма неверна. Когда форма вводится правильно, тогда сообщение "неправильное" должно быть удалено. Однако после ввода неправильного ввода для запроса дополнительного HTML, когда я исправляю форму, чтобы избавиться от нее, javascript заканчивается после функции remove.

Кроме того, есть все равно, чтобы удалить при условии? Другими словами, существует ли уже существующий метод, который говорит: "если html существует для удаления, а затем удаляет, иначе ничего не делать". или мне нужно написать свой собственный флаг.

    $(document).ready(function ()
    {
        $('#basic').on('submit', function(e)
        {
            if(!isBasicInfoValid())
            {
                if(!error)
                {
                    $('#basic').append($("<div class='basicError'>Input is not valid! </div>"));
                }
                error=true;
            }
            else if(error)
            {
                error=false;
                $('#basic').remove($(".basicError"));
                //program is stopping after remove for some reason
            }
            e.preventDefault();
        });
    };
   <body>
        <div class='form'>
            <h3> Basic Information </h3>
            <form id='basic'>
                <div>Year of Birth: <input type='number' name='YOB'> </div> 
                <div>Current Savings: <input type='number' name='CurrSav'> 
                </div>  
                <div>Expected Retirement Age: <input type='number' name='RetAge'></div>     
                <div>Life expectancy: <input type='number' name='LifeExp'>
                </div>  
                <div><input type='submit' value='Submit'></div> 
            </form>
        </div>
        <div class='form'>
            <h3> Scenario </h3>
            <form id='scenario'>
                <div>Name: <input type='text' name='ScenarioName'> </div>
                <div>Rate of Investment Return (While Working): <input type='number' name='Working'></div>
                <div>Rate of Investment Return (Retired): <input type='number' name='Retired'></div>
                <div>Desired Retirement Yearly Income: <input type='number' name='desiredInc'></div>
                <div><input type='submit' value='Submit'></div>
            </form>
            <div><button id='add' type='submit'>Add Scenario </button></div>
        </div>
</body>
  • 2
    Кроме того, как вы говорите, вы новичок в jQuery, вы видели плагин проверки jQuery? (ссылка: jqueryvalidation.org )
  • 0
    Что вы ожидаете от scriptCount? sceneCount не был определен как переменная, вам нужно сделать это, прежде чем вы сможете увеличить его. Вы также можете увеличить переменную, используя ++ вместо +1
Показать ещё 1 комментарий
Теги:

3 ответа

0
Лучший ответ

Пытаться

$('#basic').children('.basicError').remove();

или

$("#basic .basicError").remove();
  • 0
    Второй работает, но $('#basic').remove(".basicError"); не почему это. Также какова интерпретация #basic .basicError
  • 0
    Поскольку селектор удаления отличается, метод remove () будет нацелен на выбранный объект, а не на его потомков или братьев и сестер.
Показать ещё 5 комментариев
3

Попробуйте изменить:

$('#basic').remove($(".basicError")); 

Чтобы просто:

$('#basic').remove(".basicError");
2

remove принимает селектор, вы предоставляете ему объект jQuery. Это останавливается, потому что jQuery будет бросать JS-ошибку, потому что она ожидает селектора.

Попробуй это:

$('#basic').remove(".basicError");

Или, как только один .basicError, вы можете просто сделать:

$(".basicError").remove();
  • 0
    Теперь он не будет удалять HTML
  • 0
    @sreya Проверьте мои правки, попробуйте второй.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню