Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prevent page reload on form Button click in meteor?

Not sure whether this is a Meteor problem, JavaScript problem, or otherwise. Clicking on a form button causes an undesired page reload.

Other info:

  • Using Bootstrap package
  • Using jQuery package
  • Using Backbone package
  • Page-reload problem still happens even when above packages are removed
  • Commenting out the Posts.insert() line doesn't fix it either

    // from application.js
    // *this is the only event related code in the app (aside from any behind-the-scenes stuff abstracted away from us by meteor)

    Template.new_post.events = { 
    
        'click #submit' : function () {
    
          var text = $('#title').val();
          var cat = $('#category').val();
    
          // save our post with the value of the textbox
          Posts.insert({title : text, category : cat});
        }
    };
    

    // from index.html

    <template name="new_post">
      <form class="form-horizontal">
        <fieldset>
        <div class="control-group">
          <!-- Text input-->
          <label class="control-label" for="title">Title</label>
          <div class="controls">
            <input type="text" id="title" value="{{text}}" class="input-xlarge">
            <p class="help-block">Hint: Summarize your post in a few words</p>
          </div>
        </div>
        <div id="form-part-2">
          <div class="control-group">
            <label class="control-label" for="categories">Category</label>
            <div class="controls">
              <select class="input-xlarge" id="category">
                {{#each categories}}
                  <option value="{{defaultLabel}}">{{defaultLabel}}</option>
                {{/each}}
              </select>
              <p class="help-block">Hint: Choose a category</p>
            </div>
          </div>
            <!-- Button -->
            <div class="control-group">
              <div class="controls">
                <button class="btn btn-success" id="submit">Done</button>
              </div>
            </div>
        </div><!-- end div form-part-2 -->
        </fieldset>
      </form>
    </template>
    
like image 990
eric Avatar asked Dec 06 '12 03:12

eric


People also ask

How do I stop my page from refreshing on button click?

Generally when we click a Button on our page, button performs ts actions and the page gets reloaded to its original state. To do not refresh the page we add event. preventDefault(); at the end of our JavaScript function.

How do I stop a page from refreshing on a form?

Use the preventDefault() method on the event object to prevent a page refresh on form submit in React, e.g. event. preventDefault() . The preventDefault method prevents the browser from issuing the default action which in the case of a form submission is to refresh the page.


2 Answers

I think you have to return false at the end of your function for prevent submit.

like image 167
Jonathan Vukovich-Tribouharet Avatar answered Oct 07 '22 05:10

Jonathan Vukovich-Tribouharet


Other than returning false you can also call preventDefault() on the event passed into your handler:

'click #submit' : function (template, event) {
  ...
  event.preventDefault();
}

This will only prevent the default action (i.e. submitting the form), but will not stop the event from propagating.

like image 40
kynan Avatar answered Oct 07 '22 06:10

kynan