проблема отправки формы javascript, останавливающая поток ссылок

#javascript #validation #forms

#javascript #проверка #формы

Вопрос:

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

Вот мой код:

 var isDirty;
isDirty = 0;
function setDirty() {
        isDirty = 1;
}

function checkSave() 
{

    var sSave;
    if (isDirty == 1) 
    {
      sSave = window.confirm("You have some changes that have not been saved. Click OK to save now or CANCEL to continue without saving.");
      if (sSave == true) 
      {
        $('submitted_by_javascript').value = "true";
        $('main-edit-form').submit();
        return false;
      } 
      else
      {
        return true;
      }
    }
}

<a href="/registrar_data_forms/41/contacts/71/edit" onclick="checkSave();">Edit</a>
  

Моя проблема в том, что сначала кажется, что даже когда я возвращаю false из моей функции checkSave (), страница все равно перенаправляется на ссылку, по которой нажата.

Странно то, что иногда форма отправляется, работает, затем по ссылке переходят. Иногда просто переходят по ссылке, а форма на самом деле никогда не отправляется…

Ответ №1:

В вашем теге <a> измените обработчик onclick на этот:

 onclick="return checkSave();"
  

Будет использоваться ссылка href, если onclick явно не возвращает false, поэтому вам нужно передать возвращаемое значение из checkSave().

Ответ №2:

Я считаю, что вам нужно явно вернуть что-то из onclick:

onclick="return checkSave();"

чтобы предотвратить навигацию