2017-02-05 61 views
2

好的,我有以下HTML源:獲取所選擇的選項的數據-ID在數據列表

<form method="post" action="/" id="search"> 
    <input list="animals" name="animal"> 
    <datalist id="animals"> 
     <option label="Alaskan Malamute" data-id="d8c" value="Dog"> 
     <option label="Siberian Husky" data-id="w30" value="Dog"> 
     <option label="Aegean" data-id="rxx" value="Cat"> 
    </datalist> 
</form> 

而JS

function doKeyUp(e) { 
    if (e.preventDefault) e.preventDefault(); 

    if(e.keyCode == 37 || e.keyCode == 38 || e.keyCode == 39 || e.keyCode == 40) {return;} 

    var input = document.getElementById("animal"); 
    var search_after = input.value.trim(); 
    var form = document.getElementsByTagName("form")[0]; 

    var datalist = document.getElementsByTagName('datalist')[0]; 

    if (search_after.length >= 2) { 

    if (e.keyCode == 13 && search_after.length >= 3) { 
     var id = "value of data-id"; 
     // How to obtain and submit the `data-id` of the selected option. 
     document.getElementById("search").submit(); 
    } 
    } 
} // dokeyup 



document.addEventListener("DOMContentLoaded", function(event) { 
    document.getElementById("search").onsubmit = function (e) { 
    console.log("SUBMIT"); 
    return false; 
    }; 

    document.addEventListener("keyup", doKeyUp, true); 
}); 

當用戶然後選擇一個選項,我如何獲得所選<option>data-id - 這是我想要在服務器端提交和處理的實際數據。

這是一個項目,我試圖用我自己來寫所有東西,這次沒有jQuery。

知道我可以做console.log(datalist.options[1]);,但不知道如何獲得選定的索引。

更新3月4日: 必須再問一次,沒有人對我有任何提示?

還沒想通了這一點,並且真的江郎才盡了...... 最後我試着停在,表單提交前:

for (var i=0; i<document.getElementById('animals').options.length; i++) { 
    if (document.getElementById('animals').options[i].value == document.getElementsByName("animal")[0].value) { 
     var id = document.getElementById('animals').options[i].getAttribute('data-id'); 
     break; 
    } 
} 

是它在任何可能的方式來獲得所選選項的選定索引 - 或者我仍然在錯誤的路徑上? 無論如何,這在上面停止了第一個元素。

+0

可以輕鬆獲得它的jQuery –

+0

謝謝你做,但如前所述,我會盡量做到沒有任何框架/ jQuery的。 – Jon

+0

好的@KaushikThanki,你有沒有關於如何使用jQuery做到這一點的指針?還沒有弄清楚這一點。一直在閱讀和搜索,我試過的東西都沒有解決我的問題。 – Jon

回答

2

查看此答案爲jquery解決方案。&對於遲到的回覆感到抱歉。

$(function(){ 
 
    $('#p').click(function(){ 
 
     console.log($("#animals option[value='" + $('#someid').val() + "']").attr('data-id')); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form method="post" action="/" id="search"> 
 
    <input list="animals" name="animal" id="someid"> 
 
    <datalist id="animals"> 
 
     <option label="Alaskan Malamute" data-id="d8c" value="Dog"> 
 
     <option label="Siberian Husky" data-id="w30" value="Dog"> 
 
     <option label="Aegean" data-id="rxx" value="Cat"> 
 
    </datalist> 
 
    <span id="p">Click</span> 
 
</form>