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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht?
Setzen Sie am Ende Ihres
findValue()
Funktion. Das ist, wosValue
erstellt, was ich sagen kann.Hallo, ja ich habe dies ausprobiert, und wieder mal versucht aber es funktioniert nicht. Bitte beachten Sie, ich habe mehr info, kann entscheidend sein, für diese zu arbeiten... 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.
Hatte gerade eine Pause durch. Dieser code funktioniert... ABER nur auf ein <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?
Nochmals vielen Dank für diesen code, Jonathan! Sie haben mir geholfen, mehrere Male in der Vergangenheit, aber das hatte mich verwirrt. Es ist sehr viel geschätzt!
InformationsquelleAutor Sampson
Versuchen, Diese
Bitte fügen Sie weitere Informationen bei der Beantwortung
InformationsquelleAutor Dipesh
Versuchen
$('input[name=rolehidden]').val(sValue);
Dies versucht, aber es scheint nicht zu funktionieren.
InformationsquelleAutor Reid
Können Sie dies tun, indem Sie
$(selector).attr(key, value);
zB :
InformationsquelleAutor Karan