ОБНОВЛЕНИЕ: у меня есть форма электронной почты в качестве идентификатора и до сих пор та же проблема.

У меня есть форма, которая при отправке должна открываться и отображать палитру цветов, но код открывает палитру цветов, но в мгновение ока страница обновляется?

Вот мой код:

            <html data-wf-page="546cd4ede4d" data-wf-site="5d0115c4ca7148">
        <head>
          <meta charset="utf-8">
          <title>Request Form</title>
          <meta content="Request a now." name="description">
          <meta content="Request Thingy" property="og:title">
          <meta content="Request a thingy now." property="og:description">
          <meta content="summary" name="twitter:card">
          <meta content="width=device-width, initial-scale=1" name="viewport">
          <meta content="Webflow" name="generator">
          <link href="css/normalize.css" rel="stylesheet" type="text/css">
          <link href="css/webflow.css" rel="stylesheet" type="text/css">
          <link href="css/sdfj.css" rel="stylesheet" type="text/css">
          <script src="https://ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js"></script>
          <script type="text/javascript">
            WebFont.load({
              google: {
                families: ["Ubuntu:300,300italic,400,400italic,500,500italic,700,700italic","Varela Round:400","PT Sans:400,400italic,700,700italic"]
              }
            });
          </script>
          <script src="js/modernizr.js" type="text/javascript"></script>
          <link href="images/favicon2.png" rel="shortcut icon" type="image/x-icon">
          <link href="images/myfav.png" rel="apple-touch-icon">

          <script type="text/javascript">
            var _gaq = _gaq || [];
            _gaq.push(['_setAccount', 'UA-526-3'], ['_trackPageview']);
            (function() {
              var ga = document.createElement('script');
              ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
              var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
            })();
          </script>


          <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" />
          <link rel="stylesheet" href="https://thingyss.com/css/colorbox.css" />

          <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>





        <style>
            #wrapper {
          position: relative;
          display: inline-block;
          width: 100%;
          z-index: 1;
        }
        #wrapper input {
          padding-right: 14px;
        }
        #wrapper:after {
          content: "*";
          position: absolute;
          right: 15px;
          top: +12px;
          /*color: #ed9900;*/
          color: #39a2e2;
          z-index: 5;
        }





        </style>​


        </head>
        <body class="requestbody">

          <form id="email-form" name="email-form">
            ..........

            <div class="form_half_div right">
                          <div class="centered">
                            <input class="rounded_btn w-button w-preserve-3d" type="submit" value="Request Now" data-wait="Finding..." wait="Finding...">
                        </div>
                      </div>
           </form>


          <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBpz8DQg&v=3.exp&libraries=places">
          </script>
          <script src="js/socket.io.min.js"></script>
          <script type="text/javascript" src="js/mystuff.js"></script>
          <script src="https://checkout.stripe.com/checkout.js"></script>
          <script src="js/autoNumeric.js"></script>
          <script src="js/jquery.colorbox-min.js"></script>

            <script>


          $(document).ready(function() {
            setTypes();
            initialize();

            $("#email-form").submit(function(){
              requestTruckWarning(); // creates a colorbox
              e.preventDefault(); // trying to prevent page from refreshing but never hits this breakpoint?
              return false;
            });
            document.onkeypress = stopReturnKey;
          });

          function initialize() {

            var options = {
              types: ['(cities)'],
              componentRestrictions: {country: "us"}
             };


            var mapOptions = {
              center: { lat: 39.707187, lng: -100.722656},
              zoom: 14,
              draggable: false,
              scrollwheel: false
            };
            var map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions);
            google.maps.event.addListener(map, 'click', function() {
              map.setOptions({draggable: true});
            });

            bootstrapHome(map);

          }

          function geolocate() {
            if (navigator.geolocation) {
              navigator.geolocation.getCurrentPosition(function(position) {
                var geolocation = new google.maps.LatLng(
                    position.coords.latitude, position.coords.longitude);
                autocomplete.setBounds(new google.maps.LatLngBounds(geolocation,
                    geolocation));
              });
            }
          }




          </script>

         <!--  <script src="js/jquery-2.1.1.js"></script> -->
        <script src="js/main.js"></script> 
          <!-- [if lte IE 9]><script src="https://cdnjs.cloudflare.com/ajax/libs/placeholders/3.0.2/placeholders.min.js"></script><![endif] -->
        </body>
        </html>
0
jdog 8 Дек 2016 в 19:55

4 ответа

Лучший ответ

Вы забыли передать переменную события e в качестве параметра для отправки обратного вызова:

       $("#email-form").submit(function(e){ //Here
          requestTruckWarning(); // creates a colorbox
          e.preventDefault(); // trying to prevent page from refreshing but   never hits this breakpoint?
        });
7
Faouzi Oudouh 8 Дек 2016 в 17:14

В вашей функции обратного вызова вы пропускаете переданный параметр e (объект события):

$('#email-form').submit(function (e) {
    requestTruckWarning() // Creates a colorbox
    e.preventDefault() // This now works, because `e` exists
})

Кроме того, похоже, что некоторые другие ответы (ссылка на Джай) указали, что #email-form не относится к элемент в вашем документе. Это должно быть исправлено, прежде чем приведенный выше код будет успешно запущен.

3
Community 23 Май 2017 в 12:30

Здесь на самом деле две проблемы. Как сказал @Jai, у вас не установлен атрибут id для формы, поэтому jQuery ищет элемент с id = 'email-form' и ничего не находит, поэтому код не выполняется. Даже если он будет выполнен, он не остановит отправку формы, потому что, пока вы используете e.preventDefault, в этом случае 'e' - это объект события, то есть вещь, которую вам нужно передать в ваше событие. обработчик . Добавьте идентификатор в свой for, затем измените объявление для вашего обработчика событий следующим образом:

        $("#email-form").submit(function(e){
1
Ryan 8 Дек 2016 в 17:01

У вашего form нет идентификатора с именем #email-form. Либо добавьте атрибут ID:

<form id='#email-form'>  

Или измените селектор:

$('form').submit(function(){

И поскольку другие ответы также упоминаются, вы должны передать e как событие в обратном вызове submit.

$('form').submit(function(e){ // <-------here  

Еще два изменения должны быть сделаны, как указано выше.

2
Jai 8 Дек 2016 в 16:58