Chris P
Chris P

Reputation: 2357

set select value with jquery

Christ is Risen,

Hello,

I have the following code:

<script type="text/javascript">
			gramatoseira = "Tahoma, Geneva, sans-serif";
			<?php
			if(isset($_COOKIE["gramatoseira"])) {
				echo "gramatoseira = \"" . $_COOKIE["gramatoseira"]."\";";
			}
			?>
</script>

The php execution output is something like:

<script type="text/javascript">
            gramatoseira = "Tahoma, Geneva, sans-serif";
            gramatoseira = "\'Lucida Console\', Monaco, monospace";     </script>


<select id="grammatoseires">
        <option value="Georgia, serif">Georgia, serif</option>
        <option value="\'Palatino Linotype\', Book Antiqua, Palatino, serif">"Palatino Linotype", "Book Antiqua", Palatino, serif</option>
        <option value="\'Times New Roman\', Times, serif">"Times New Roman", Times, serif</option>
        <option value="\'Arial Black\', Helvetica, sans-serif">"Arial Black", Gadget, sans-serif</option>
        <option value="\'Comic Sans MS\', cursive, sans-serif">"Comic Sans MS", cursive, sans-serif</option>
        <option value="\'Lucida Sans Unicode\', Lucida Grande, sans-serif">"Lucida Sans Unicode", "Lucida Grande", sans-serif</option>
        <option value="Tahoma, Geneva, sans-serif">Tahoma, Geneva, sans-serif</option>
        <option value="\'Trebuchet MS\', Helvetica, sans-serif">"Trebuchet MS", Helvetica, sans-serif</option>
        <option value="Verdana, Geneva, sans-serif" >Verdana, Geneva, sans-serif</option>
        <option value="\'Courier New\', Courier, monospace">"Courier New", Courier, monospace</option>
        <option value="\'Lucida Console\', Monaco, monospace">"Lucida Console", Monaco, monospace</option>
    <select>

I am trying to set the value. $("#grammatoseires").val(gramatoseira);

The above code does n't do nothing.

Any help would be usefull.

Upvotes: 0

Views: 49

Answers (3)

Chris P
Chris P

Reputation: 2357

Based on Jonas W code.

I wrote this:

    <?php
        $fonts = array();
        $fonts[0] = "Georgia, serif";
        $fonts[1] = "\'Palatino Linotype\', Book Antiqua, Palatino, serif";
        $fonts[2] = "\'Times New Roman\', Times, serif";
        $fonts[3] = "\'Arial Black\', Helvetica, sans-serif";
        $fonts[4] = "\'Comic Sans MS\', cursive, sans-serif";
        $fonts[5] = "\'Lucida Sans Unicode\', Lucida Grande, sans-serif";
        $fonts[6] = "Tahoma, Geneva, sans-serif";
        $fonts[7] = "\'Trebuchet MS\', Helvetica, sans-serif";
        $fonts[8] = "Verdana, Geneva, sans-serif";
        $fonts[9] = "\'Courier New\', Courier, monospace";
        $fonts[10] = "\'Lucida Console\', Monaco, monospace";
        $font_output = "";
        foreach($fonts as $font){
            $font_output.="<option value=\"".$font."\"";
            if(isset($_COOKIE["gramatoseira"])&& $font==$_COOKIE["gramatoseira"]) {
                $font_output.=" selected='selected' ";
            }
            $font_output.=">".$font."</option>";
        }
        echo $font_output;
    ?>

Works pretty well. Thanks all for your help!

Upvotes: 0

James
James

Reputation: 22246

It doesn't like the escaped quotes in your option values.

Do:

<option value="'Lucida Console', Monaco, monospace">...</option>

or

<option value="&#39;Lucida Console&#39;, Monaco, monospace">...</option>

$('button').click( function () {
  gramatoseira = "'Lucida Console', Monaco, monospace";
  $("#grammatoseires").val(gramatoseira);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="grammatoseires">
<option value="Georgia, serif">Georgia, serif</option>
        <option value="'Palatino Linotype', Book Antiqua, Palatino, serif">"Palatino Linotype", "Book Antiqua", Palatino, serif</option>
        <option value="'Times New Roman', Times, serif">"Times New Roman", Times, serif</option>
        <option value="'Arial Black', Helvetica, sans-serif">"Arial Black", Gadget, sans-serif</option>
        <option value="'Comic Sans MS', cursive, sans-serif">"Comic Sans MS", cursive, sans-serif</option>
        <option value="'Lucida Sans Unicode', Lucida Grande, sans-serif">"Lucida Sans Unicode", "Lucida Grande", sans-serif</option>
        <option value="Tahoma, Geneva, sans-serif">Tahoma, Geneva, sans-serif</option>
        <option value="'Trebuchet MS', Helvetica, sans-serif">"Trebuchet MS", Helvetica, sans-serif</option>
        <option value="Verdana, Geneva, sans-serif" >Verdana, Geneva, sans-serif</option>
        <option value="'Courier New', Courier, monospace">"Courier New", Courier, monospace</option>
        <option value="'Lucida Console', Monaco, monospace">"Lucida Console", Monaco, monospace</option>
</select>
<button>Set it</button>

Upvotes: 1

Jonas Wilms
Jonas Wilms

Reputation: 138557

Theres no need to do this with JS. Simply output the options directly:

 <option value="Georgia, serif">Georgia, serif</option>
 <?php
        if(isset($_COOKIE["gramatoseira"])) {
            echo "<option selected='selected' value='" . $_COOKIE["gramatoseira"]."' >".$_cookie["gramatoseira"]."</option>";
        }
?>

Upvotes: 1

Related Questions