2014-04-03 15 views
6

Rất đơn giản và thẳng về phía trước. Tôi đã điền trước một nhà dữ liệu HTML với các giá trị, trên biểu mẫu khi tôi muốn chọn một giá trị và chèn nó vào cơ sở dữ liệu SQLite. Đây là mã ví dụ của tôi không hoạt động. Xin hãy giúp đỡ. HTML5 dạng datalist tạo:Lấy giá trị được chọn trong datalist bằng cách sử dụng jQuery

<input name="TypeList" list="TypeList" placeholder="Select Type"/> 
<datalist id="TypeList"> 
    <option value="State"> 
    <option value="Area"> 
    <option value="Town"> 
    <option value="Street"> 
    <option value="Number"> 
    <option value="Local Government"> 
    <option value="Ward"> 
    <option value="Country"> 
</datalist> 

đây là mẫu mã jquery mà không làm việc:

var relationshipTemp = $('#TypeList option:selected').text(); 
+0

có bạn đã cố gắng thay đổi '$ ('# TypeList tùy chọn: được chọn '). text(); 'to' $ (' # Loại danh sách tùy chọn: đã chọn '). val(); '? – 13ruce1337

+0

có, tôi đã thử nó, bởi vì tôi nhập vào SQLite (WebSQL) thay vì hiển thị các giá trị thực mà nó hiển thị "không xác định". Chuyện gì vậy? – kehinde

+0

Trong firefox, '' có vẻ hoạt động. – Cullub

Trả lời

1

thử .val() thay vì:

var relationshipTemp = $('#TypeList option:selected').val(); 
12

Có một selector để chọn yếu tố đầu vào. Đề cập đến sự kiện mà sau đó bạn muốn các giá trị được di chuyển. Lấy giá trị bằng cách sử dụng .val().

Ví dụ:

$("input[name=TypeList]").focusout(function(){ 
    alert($(this).val()); 
}); 

Hy vọng điều này là những gì bạn đang tìm kiếm jsFiddle

+2

Câu trả lời này phải được chấp nhận – Fasna

1

Tôi sẽ sử dụng '.Trên()':

HTML

<input type="text" name="display" id="display" value="" list="list-display" /> 
<datalist id="list-display"> 
<option>Name</option> 
<option>Id</option> 
</datalist> 

Javascript

$("#display").on('input',function(e){ 
alert($(this).val()); 
}); 
3

:selected không hoạt động trên datalist tùy chọn, vì một nhà dữ liệu có thể cung cấp đề xuất cho nhiều mục nhập. Nếu hai đầu vào khác nhau chứa hai đề xuất khác nhau từ danh sách, thì đó sẽ là đề xuất được chọn?

Như đã đề cập trong ý kiến ​​khác, bạn có thể kiểm tra giá trị của đầu vào thay đổi như sau:

$("input[name='Typelist']").on('input', function(e){ 
    var selected = $(this).val(); 
}); 

Tuy nhiên, nếu bạn muốn chắc chắn rằng giá trị thực sự là một trong những tùy chọn từ datalist bạn sẽ phải làm một kiểm tra bổ sung, như với một khách truy cập datalist vẫn có thể nhập các giá trị khác nhau trong đầu vào. Datalist chỉ cung cấp các đề xuất.

Một giải pháp để kiểm tra nếu giá trị là trong datalist:

$("input[name='Typelist']").on('input', function(e){ 
    var $input = $(this), 
     val = $input.val(); 
     list = $input.attr('list'), 
     match = $('#'+list + ' option').filter(function() { 
      return ($(this).val() === val); 
     }); 

    if(match.length > 0) { 
     // value is in list 
    } else { 
     // value is not in list 
    } 
}); 
1

Hãy thử điều này.

$('#id_relative option[datalisted=datalisted]').val() 
-2

giải pháp đơn giản cho vấn đề này là làm điều đó khi bạn nhận được giá trị từ một trường nhập văn bản

Tên:

<input id="l" list="bloodgroup" name="blood_group" placeholder="Blood group"> 
        <datalist id="bloodgroup"> 
         <option value="A+"> 
         <option value="B+"> 
         <option value="AB+"> 
         <option value="O+"> 
         <option value="A-"> 
         <option value="B-"> 
         <option value="AB-"> 
         <option value="O-"> 
        </datalist> 

<button type="button" onclick="myFunction()">Try it</button> 



<script> 
function myFunction() { 
    console.log(document.getElementById("l").value); 
} 
</script> 
0
<input list="Model" id="ModelList" placeholder="Select Model"> 
<datalist id="Model"> 
<option value="A"> 
<option value="B"> 
<option value="C"> 
<option value="D"> 
</datalist> 
<script> 
var dataset= document.getElementById("ModelList").value; 
alert(dataset);</script> 
+5

Cảm ơn bạn đã trích đoạn mã này, đoạn mã này có thể cung cấp một số trợ giúp tức thì, có giới hạn.[Giải thích đúng sẽ cải thiện đáng kể giá trị lâu dài của nó] (// meta.stackexchange.com/q/114762/350567) bằng cách hiển thị * tại sao * đây là giải pháp tốt cho vấn đề và sẽ giúp ích cho tương lai độc giả với các câu hỏi tương tự khác. Vui lòng [sửa] câu trả lời của bạn để thêm một số giải thích, bao gồm các giả định bạn đã thực hiện. – iBug

Các vấn đề liên quan