2016-10-15 14 views
0

私は奇妙な動作に直面しています(私は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。 enter image description here

しかし、奇妙なことがあるが、すべての情報は、入力オブジェクトに与えられている: enter image description here

私は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… } 
+0

[私はこれを再現できません](http://jsfiddle.net/CNMfL/292/)、コードは正常に動作しています。 '' txtAuszubildender''に 'id'の代わりに' data-id'を使うことを考えてください。なぜなら、 'id'は**一意の**識別子なので、文書で一度しか使われないからです。 –

+0

Fabianに感謝しますが、残念ながらdata-idは私のために働きません。 "txtAuszubildender"はユニークです。私は質問に少し多くの情報を入れました。 –

答えて

0

です。問題が見つかりました。何らかの形で先読みは、同じクラス名を持つ第2の入力フィールドを作成します。したがって、作成された2番目のinput要素が最初に来てidを持たないので、IDを取得できません。興味深いものになるだろう何

enter image description here

、私は、第2の入力要素のクラスの値についての任意のコントロールを持っていますか?

関連する問題