Josh Kirkpatrick
Josh Kirkpatrick

Reputation: 403

changing the Placeholder attribute in html input field

i have a form that has an input field that uses a datalist, what i want to do is when something is selected from that field, update another input field with what was selected, here is what i have so far

                <div class='form-row'>
                    <div class='col-xs-12 form-group required'>
                        <h2><label class='control-label'>Product code</label></h2>
                        <input id="ItemSelect" type=text list=jobs style='font-size:21px;height: 40px;'
                               class='form-control'
                               name="Code">
                        <datalist id=jobs>
                            <?php
                            foreach ($this->Products as $a) {
                                echo '<option value=' . $a["Code"] . '>' . $a["Code"] . " - " . $a["Name"] . ' </option>';
                            }
                            ?>
                        </datalist>
                    </div>

                    <div class='col-xs-12 form-group required'>
                        <input id="Placeholder" readonly class='form-control'
                               placeholder="Prodcut Descirption">
                    </div>

                    <script>
                        $("#ItemSelect")
                            .change(function () {
                                var str = "";
                                $("datalist option:selected").each(function () {
                                    str += $(this).text() + " ";
                                });
                                $("#Placeholder").attr("placeholder", str).val("").focus().blur();
                            })
                            .change();

                    </script>

this kind of works, it is selecting the right input field to detect the change, however it's not putting the value in. if i change

$("datalist option:selected") 

to

$("select option:selected")

it does put the value of all the other select fields in there any ideas?

Upvotes: 1

Views: 619

Answers (2)

Stephan Muller
Stephan Muller

Reputation: 27600

There is no such thing as option:selected in datalists.

You can get the selected value by looking at what's currently in the input instead:

$("#ItemSelect").change(function() {
    var str = $(this).val() + " ";
    $("#Placeholder").attr("placeholder", str).val("").focus().blur();
});

If you only want to do this when the input value is actually present in the datalist:

$("#ItemSelect").change(function() {
    var str = $(this).val() + " ";.

    $('datalist option').each(function() {
        if($(this).text() === str) {
            $("#Placeholder").attr("placeholder", str).val("").focus().blur();
        }
    }); 
});

Upvotes: 2

Deepak David
Deepak David

Reputation: 145

<datalist id=jobs>

should change datalist tag to select tag

<select id=jobs>

once you change that the below statement will work

$("select option:selected") 

Upvotes: -1

Related Questions