2016-10-15 46 views
0

我面臨着一個奇怪的行爲(我不是一個javascript guru :-()。我想使用typeahead進行自動完成,對我來說工作正常。 。各種形式的字段,其中我想啓用/禁用此表格組件的事件也能正常工作之外的所有預輸入的輸入框Typeahead得到的ID結果爲undefined

我有什麼:

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的正常工作,只有預輸入輸入框不`噸給他的ID。 enter image description here

但奇怪的是,所有信息都給出了輸入對象: enter image description here

如果我使用var valueId = valueElement.prop('id');,而不是不確定的我變得那麼空字符串。

我希望有人能給一個提示。

編輯: 我玩了一點點的螢火蟲控制檯。我添加了功能:

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

充滿變量:

var list = findDetailElements(); 
console.log(list); 

結果:( 「txtAuszubildender仍下落不明。」)

Object { lblResource: "txtId", lblZustaendigeStelle: "selZustaendigeStelle", lblAuszubildender: undefined, lblBeruf: "selBeruf", lblFachrichtung: "selFachrichtung", lblSchwerpunkt: "selSchwerpunkt", lblBetrieb: "txtBetrieb", lblBeginn: "txtBeginn", lblEnde: "txtEnde", lblStatus: "txtStatus" } 

但是當我做這樣的事情:

$("#txtAuszubildender") 

我得到一個結果:

Object { length: 1, context: HTMLDocument → contract, selector: "#txtAuszubildender", 1 weitere… } 
+0

[我無法重現此](http://jsfiddle.net/CNMfL/292/),你的代碼對我來說工作正常。你應該考慮使用'data-id'而不是''txtAuszubildender'',因爲'id'是一個**唯一的**標識符,並且只能在文檔中使用一次。 –

+0

謝謝Fabian,不幸的是data-id對我不起作用。 「txtAuszubildender」是獨一無二的。我在這個問題上提供了更多的信息。 –

回答

0

好的,我找到了問題。以某種方式鍵入創建第二個輸入字段具有相同的類名稱。因此創建的第二個輸入元素是第一個,沒有id,這就是爲什麼我沒有得到任何ID。

enter image description here

什麼是有趣的,我對自己在這第二個輸入元素的類值的任何控制?