2015-07-02 4 views
0

У меня есть шаблон html, который я использую с кодом сайта Django. В шаблоне есть несколько форм. Две формы - это поля даты, и у меня есть подтверждение всплывающее окно, которое активируется при отправке, если пользователь заполняет их. Я хотел, чтобы всплывающее окно покидало форму отправки и возвращалось на страницу, если пользователь нажимает кнопку «отменить» и продолжите отправку формы, если пользователь нажмет «ok».Подтверждение Javascript продолжается независимо от ответа пользователя

Подтверждение всплывающего окна отображается правильно, но представление формы продолжается независимо от того, что пользователь нажимает. Как изменить его, чтобы выход из формы вышел, если пользователь нажимает «отменить»?

Javascript выглядит следующим образом:

<script type="text/javascript"> 
    var checkFields = ["SPAN_START","SPAN_END"]; 
    function checkForm(theForm) { 

     for (i in checkFields) { 
     var fieldName = checkFields[ i ]; 
     var theField = theForm[ fieldName ]; 

     if (theField.value) { 
      var retVal = confirm("Are you sure you want to specify a date?"); 
      if (retVal == true){ 
      theField.submit() 
      return true; 
      } else { 
      return false; 
      } 
     } 
     } 
    } 
</script> 

HTML, где он используется, выглядит так:

<form action="/InterfaceApp/Nominal_Request/" method="post" class="form" onsubmit="checkForm(this)"> 
    {% csrf_token %} 
    <div class="panel-body text-center"> 
    {% bootstrap_form form_span_start %} 
    {% bootstrap_form form_span_end %} 
    {% buttons %} 
    <button type="submit" class="btn btn-primary center-block" value="Submit" name="Range"> 
     {% bootstrap_icon "fire" %} Generate Range of Requests 
    </button> 
    {% endbuttons %} 
    </div> 
</form> 

Может кто-нибудь сказать мне, как отменить представление формы, если пользователь нажимает кнопку " Отмена'??

Большое значение.

+0

@adeneo Это сработало! Спасибо за простое исправление :) – kdubs

ответ

0

Вы должны вернуть значение функции обработчика событий рядный

onsubmit="return checkForm(this)" 

предпочтительно вы бы не использовать встроенные обработчики событий на всех, но вместо этого addEventListener.

+0

'e.preventDefault();' также требуется, так как первый - это просто соглашение. –

+0

@BertPeters - зачем требовать 'preventDefault', когда функция возвращает false? – adeneo

+0

Я едва мог рассказать это лучше, чем принятый ответ на этот вопрос: https://stackoverflow.com/questions/18971284/event-preventdefault-vs-return-false-no-jquery –

Смежные вопросы