私は奇妙な動作に直面しています(私はjavascriptの専門家ではありません:-()。私はオートコンプリートのためにタイプアヘッドを使用したいと思います。 。私は、このフォームコンポーネントを有効/無効にしたいイベントとフォームフィールドの種類は、先行入力の入力ボックス以外のすべてのためにも罰金作品IDの結果が未定義になっています
私が持っているもの:。
HTML-スニペットを:
<div class="row detailRow">
<div class="col-md-4">
<label id="lblAuszubildender" class="detailLabel">Auszubildender:</label>
</div>
<div class="col-md-7 col-md-offset-1">
<input id="txtAuszubildender" name="txtAuszubildender" class="typeahead form-control detailValue" placeholder="Auszubildender" />
...
// Instantiate the Typeahead UI
$('#txtAuszubildender').typeahead(
{
hint: true,
highlight: true,
minLength: 3
},
{
displayKey: 'value',
source: apprenticeEngine.ttAdapter()
});
のJavaScriptスニペット:デバッグ時に
$(".detailRow").each(function(){
var labelElement = $(this).find(".detailLabel");
var valueElement = $(this).find(".detailValue");
var labelId = labelElement.attr('id');
var valueId = valueElement.attr('id');
filterArray[labelId] = valueId;
});
、JavaScriptが正常に動作し、すべての要素のために、唯一の先行入力のInputBox関数は、彼のIDを与えるdoesnの `t。
しかし、奇妙なことがあるが、すべての情報は、入力オブジェクトに与えられている:
私はvar valueId = valueElement.prop('id');
を使用する場合は、代わりに未定義の私は、空の文字列になります。
私は誰かがヒントを与えることを願っています。
編集: Firebugコンソールで少し演奏しました。
var list = findDetailElements();
console.log(list);
結果:
Object { lblResource: "txtId", lblZustaendigeStelle: "selZustaendigeStelle", lblAuszubildender: undefined, lblBeruf: "selBeruf", lblFachrichtung: "selFachrichtung", lblSchwerpunkt: "selSchwerpunkt", lblBetrieb: "txtBetrieb", lblBeginn: "txtBeginn", lblEnde: "txtEnde", lblStatus: "txtStatus" }
を( "txtAuszubildenderはまだ不足している")が、私はのような何かをするとき:
function findDetailElements(){
var filterArray = {};
$(".detailRow").each(function(){
var labelElement = $(this).find(".detailLabel");
var valueElement = $(this).find(".detailValue");
var labelId = labelElement.attr('id');
var valueId = valueElement.attr('id');
filterArray[labelId] = valueId;
});
return filterArray;
}
は、変数を充填:私は、機能を追加しました
$("#txtAuszubildender")
結果は
Object { length: 1, context: HTMLDocument → contract, selector: "#txtAuszubildender", 1 weitere… }
[私はこれを再現できません](http://jsfiddle.net/CNMfL/292/)、コードは正常に動作しています。 '' txtAuszubildender''に 'id'の代わりに' data-id'を使うことを考えてください。なぜなら、 'id'は**一意の**識別子なので、文書で一度しか使われないからです。 –
Fabianに感謝しますが、残念ながらdata-idは私のために働きません。 "txtAuszubildender"はユニークです。私は質問に少し多くの情報を入れました。 –