Sara44
Sara44

Reputation: 422

Get data from form and write to cookie with jQuery

bit of a jQuery noob but learning quickly thanks to StackOverflow.

Can anyone give me code that will get data from a form and write it out to a cookie (not a session cookie) using jQuery. I am loading the jQuery cookie plugin from here:

https://github.com/carhartl/jquery-cookie

I'd also like to know if I have to load my code when the DOM is ready as previously with php I loaded cookies first thing. Can't get my head round the DOM yet.

Thanks in advance.

OK here is the current code, thanks to reply below. I can't get the cookie working though but the alert works fine when uncommented:

           <form id="myform">
              <fieldset>
                <h3>Search</h3>
                <p>
                  <label>Your search *</label>
                  <input type="text" id="mysearch" pattern="[a-zA-Z ]{5,}" maxlength="30" />
                </p>
                <fieldset>
                    <input type="range" id="range" min="1" max="30" value="10"  />
                    <input type="range" id="range2" min="30" max="9000" value="2000"  />
                 </fieldset>

                <button id="subbtn" type="submit">Submit form</button>
                <button type="reset">Reset</button>
              </fieldset>
            </form>


        $(function() {
        // initialize tooltip
        $(".imgwrap").tooltip({ 
        //$(".tooltip").tooltip({ effect: 'slide'});
           // tweak the position
           offset: [10, 2],

           // use the "slide" effect
           effect: 'slide'

        // add dynamic plugin with optional configuration for bottom edge
        }).dynamic({ bottom: { direction: 'down', bounce: true } });
        });

        //this one loads the form validator
        $("#myform").validator();

        //this one for the slider
        $(":range").rangeinput();

    $("#subbtn").on("click", function () {
    // alert("Cookie!");
        $.cookie('Searchitem', $("#mysearch").val(), { expires: 365 });
    });

Any ideas why my cookie is not setting? Browser is set to accept and I'm debugging with Firebug.

Upvotes: 0

Views: 3535

Answers (2)

Slippery Pete
Slippery Pete

Reputation: 3110

A persistent cookie is the same as a session cookie except it has an expiration date so it hangs around.

This will write the value of the text input to a cookie that expires in 365 days:

    <input id="txt" type="text" value="foo" />
    <input id="btn" type="button" value="write cookie" />

...

    $(document).ready(function () {
        $("#btn").on("click", function () {
            $.cookie('myCookie', $("#txt").val(), { expires: 365 });
        });
    });

EDIT

New code per updated question:

    $(function () {

        // initialize tooltip
        $(".imgwrap").tooltip({
            //$(".tooltip").tooltip({ effect: 'slide'});
            // tweak the position
            offset: [10, 2],

            // use the "slide" effect
            effect: 'slide'

            // add dynamic plugin with optional configuration for bottom edge
        }).dynamic({ bottom: { direction: 'down', bounce: true} });

        //this one loads the form validator
        $("#myform").validator();

        //this one for the slider
        $(":range").rangeinput();

        $("#subbtn").on("click", function () {
            // alert("Cookie!");
            $.cookie('Searchitem', $("#mysearch").val(), { expires: 365 });
        });

    });

Upvotes: 1

koosa
koosa

Reputation: 3040

I'm assuming from your tagging you want to submit the form using GET. You could use the method described here to extract the URL string value.

Then it's just a matter of setting the value to the cookie:

$.cookie('mycookie', getParameterByName('varname'), {expires: 100});

You can check the value of the cookie like so:

console.log($.cookie('mycookie'));

Upvotes: 0

Related Questions