2016-01-07 47 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字段进行查询后进行格式化。