2016-01-07 51 views
0

我有一個html文本框,它在jQuery UI - v1.11.4中使用了JavaScript自動完成功能。建議的文本框字符串是從我的數據庫中的表中串聯幾列(patient_no,patient_name,age和residence)。我想截斷部分字符串,因爲我只需要在我的文本框中放置patient_no列。Javascript - 在將文本放入文本框之前更改建議的文本

可能的文本建議: '00032 >>湯姆·邁克爾>> 14yrs >>華蘭生'

我想放置在文本框中什麼: ''

下面是我的代碼

//html 
<input name="patientNo" id="patientNo" type="text" /> 




//autocomplete.php 
    $pat_no_seq_result = pg_query("SELECT patient_no || ' >> ' || surname || ' ' || other_name || ' >> ' || (current_date-year_of_birth)/365 || 'yrs' || ' >> '||residence FROM hp_outpatient_register;"); 
    $dname_list = array(); 
    while ($row = pg_fetch_row($pat_no_seq_result)) { 
     $dname_list[] = $row[0] ; 
    } 





//javascript 
    <script type="text/javascript"> 
     $(function() { 
      var availableTags = <?php include('autocomplete.php'); ?>; 
      $("#patientNo").autocomplete({ 
       source: availableTags,//autoFocus: true 
       select: function(event, ui) { 
       getPatientNo(ui.item.value); 
      } 
      }); 

      function getPatientNo(value) { 
      var patNo = value.substring(0, value.indexOf(' ')); 
      document.getElementById("patientNo").value = patNo; 
     } 
     }); 
    </script> 

有沒有什麼辦法可以截斷用戶選擇的字符串,然後再將它放到文本字段中。如果有更好的方法與我使用的,請告知。

+0

@ rz3r0我可以使用該方法,但放置在文本框中的文本是整個字符串;不是截斷的輸出。 – user5747822

+0

你在做什麼是正確的。並不是說它「更好」,但可以將你的函數調用放在一行中。所以只需$(「#patientNo」)。val(ui.item.value.split(「」)[0]); – slopapa

回答

0

我解決了類似的問題,但我的服務器端是Django。我沒有使用PHP的,但我相信你會返回一個列表對象具有以下結構:

var label = $.rowpatientNo + ' >> ' + $row.surname + ' >> ' + ' ' + $row.other_name + ' >> ' + $row.age; 

//Structure 
{'id': $row.patientNo, 'label': label, 'value': $row.patientNo} 

凡「標籤」是要顯示的建議,什麼「價值」是要顯示什麼在選擇建議後的文本框中。

年齡必須在查詢中或使用current_date和year_of_birth字段進行查詢後進行格式化。