Domanda

Breve Premessa:

Sto usando Jquery Autocomplete per la ricerca del valore di un elemento da un database.Tale valore è quindi, in qualche modo, dato un campo nascosto all'interno di una stessa forma e quindi inserito nel database.

Ciò che complica questo un po ' è che sto lavorando attraverso Schede Jquery Ui, che non ho avuto un sacco di divertimento con il passato.

Così un po ' di codice all'interno del file che crea le schede:

<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>

Lo stesso file crea le schede e ha anche una funzione di callback avvio di 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>

Poi con l'attuale scheda codice è la forma

<?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 

Tutto quello che voglio fare è ottenere sValue e rendere il valore del campo hidden nel form.

Vorrei anche ricordare che il JQuery Tabs avere più schede che hanno tutti la stessa forma.Questo significa che ci sono diversi campi di input tutti con lo stesso nome/id/classe in tutte le schede.

So che questo è un problema per gli attributi ID, ma non so se lo stesso vale per il nome di attributi.

Ho provato così tanti diversi frammenti di codice di Javascript e Jquery che non riesco proprio a pensare.

SCOPERTA ...Ma ancora un problema

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

Appena avuto una rottura attraverso.Questo codice non funziona...MA solo su un <input ="text"> Elemento.Non riesce a lavorare su <input ="hidden"> C'è un lavoro in giro o devo usare i CSS per nascondere la casella di testo di input?

Si prega di aiutare

Tim

È stato utile?

Soluzione

"Tutto quello che voglio fare è ottenere sValue e rendere il valore del campo hidden nel form."

Hai provato?

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

Altri suggerimenti

Prova Questo

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

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

Si può fare questo $(selector).attr(key, value);

ad esempio :

$('input.classname').attr('value','value to set');
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top