Set Hidden-Feld Wert, um Javascript-Variable mit Jquery oder Javascript

Sehr Kurzer Hintergrund:

Ich bin mit Jquery Autocomplete - lookup die dem Wert eines Elements aus einer Datenbank. Dieser Wert ist dann irgendwie gegeben, um ein verstecktes Feld in der gleichen form und dann eingefügt in die Datenbank.

Was erschwert dies etwas ist, dass ich arbeite durch Jquery Ui Tabs, die ich noch nicht hatte eine Menge Spaß mit in die Vergangenheit.

So einige code innerhalb der Datei, die erstellt die tabs:

<script type="text/javascript">
function findValue(li) {
    //if( li == null ) return alert("No match!");

    //if coming from an AJAX call, let's use the CityId as the value
    if( !!li.extra ) var sValue = li.extra[0];

    //otherwise, let's just display the value in the text box
    else var sValue = li.selectValue;
}

function selectItem(li) {
    findValue(li);
}

function formatItem(row) {
    return row[0];
}

function lookupAjax(){
    var oSuggest = $(".role")[0].autocompleter;

    oSuggest.findValue();

    return false;
}

function lookupLocal(){
    var oSuggest = $("#role")[0].autocompleter;

    oSuggest.findValue();

    return false;
}
</script>

Die gleiche Datei erstellt die tabs und hat auch einen Rückruf einleiten, die Jquery Autocomplete

<script type="text/javascript">
        $(function() {
            $("#tabs").tabs({
             load: function(event, ui) { setTimeout( function() { $(".title").focus(); }, 500 );
                    var ac = $(".role").autocomplete(
                        "/profile/autocomplete",
                        {
                            delay:10,
                            minChars:1,
                            matchSubset:1,
                            matchContains:1,
                            cacheLength:10,
                            onItemSelect:selectItem,
                            onFindValue:findValue,
                            formatItem:formatItem,
                            autoFill:true
                        }
                    );

                    ac[0].autocompleter.findValue(); 
                    }
                });
            });
        </script>

Dann in die tatsächlichen Register-code ist die form,

<?php   $tab_id = $this->uri->segment(4);
    $hidden = array('tab_id' => $tab_id);
    $attributes = array('name' => 'additem');
echo form_open('profile/new_item', $attributes, $hidden); ?>
<input type="hidden" value="" name="rolehidden"/>
<?php echo validation_errors(); ?>
<table width="100%" padding="0" class="add-item">
    <tr>
        <td>Title: <input class="title" type="text" name="title" value="<?php echo set_value('title'); ?>"></input></td>
        <td>Role: <input class="role" type="text" name="role" size="15"></input></td>
        <td>Year: <input type="text" name="year" size="4" maxlength="4"></input></td>
        <td align="right"><input type="submit" value="Add"></input></td>
    </tr>
</table>
</form>t 

Alles was ich will zu tun ist, erhalten sValue und machen es den Wert des versteckten Feldes im Formular.

Ich sollte auch erwähnen, dass die JQuery-Tabs haben mehrere Registerkarten, die alle die gleiche form haben. Dies bedeutet, dass es mehrere verschiedene input Felder die alle mit dem gleichen Namen/id/- Klasse über alle Register.

Ich weiß, das ist ein problem für ID-Attribute, aber nicht sicher, ob das gleiche gilt für die name-Attribute.

Ich habe versucht, so viele verschiedene code-snippets von Javascript und Jquery, dass ich nur denken kann nicht mehr.

DURCHBRUCH ... Aber noch ein problem,

$("[name='rolehidden']").val(sValue);

Hatte gerade eine Pause durch. Dieser code funktioniert... ABER nur auf eine <input ="text"> Element. Es funktioniert nicht auf <input ="hidden"> gibt es eine Arbeit um, oder sollte ich den Einsatz von CSS zum ausblenden des text-Eingabe-Feld?

Bitte helfen

Tim

InformationsquelleAutor Tim | 2010-01-14

Schreibe einen Kommentar