проблема с jquery event.preventdefault

#jquery

#jquery

Вопрос:

Мой event.preventdefault не работает. На самом деле я хочу, чтобы, когда пользователь нажимает кнопку добавить, ему будет предложено «сначала ввести поле», если все поля пусты.

Для этого я использую такой флаг, чтобы предотвратить сохранение данных, если все поля пусты, как показано ниже: (также, когда я нажимаю кнопку, она показывает введите поле, и после этого оно перейдет к функции ajax, даже если я применил event.preventdefault(); я точно не знаю, где я ошибаюсь)

Заранее спасибо,

Вот мой код:

  <tr>
        <td>
            <button type="button" name="add">     //this is my add button
                Add
            </button>
        </td>
   </tr>
       $("#tabs").tabs();
       $("button").button();
       $("button").click(function(event){
            var flagg=0;
            if( $("#patient_name").val() == "" )
            {
                flagg=1;
            }
            if(flagg == 1)
            {
                alert("enter the patient name!!");
                event.preventDefault();
            }

        form_name = $(this).parents("form").attr('name');
        var params    = $("#"   form_name).serialize();
        params=params.replace(/amp;/g,'~^~^^');
        table_name = "patient_info";
        button_name = "temp";

        $.ajax({
             type: "POST",
             url: "ajax1.php",
             data: "params="   params   "amp;button_name="   button_name,
             success: function(msg){
                 //alert(msg);
                if (msg == "true")
                {
                    alert("Patient data sucessfully saved!");
                    window.location.replace("ivf2.php?id="   $("#id").val());
                }   
                else    
                {
                    //alert("Failed to save, please check and try again!");
                }
        }
        });
  });
  

Ответ №1:

event.preventDefault просто останавливает выполнение любого другого подключенного события (например, что-то в onclick или href ). Это не останавливает ваш собственный код javascript.

Сделайте это:

 if(flagg == 1)
    {
        alert("enter the patient name!!");
        event.preventDefault();
        return;
    }
  

Ответ №2:

В строке if(flagg == 1) вы вызываете event.preventDefault(), но затем продолжаете работу с вашим ajax post. В этот момент вы хотите вернуться через return; из вашего обработчика кликов, чтобы он не продолжал отправку формы.