Javascript: Foreach значения в два отдельных поля формы - PullRequest
0 голосов
/ 04 ноября 2019

С помощью typeahead я возвращаю значения, которые содержат две данные. Мне нужно разделить эти данные на два разных поля.

$(document).ready(function(){
  $('#mail_field').typeahead({
	source:  function (query, process) {
		return $.post('http://127.0.0.1:8000/api/userdetailstypeahead', { query: query }, function (data) {
			//console.log(data);
			return process(data); //sample result in the #mail_field: John.Doe@jjc.com - Accounting  
                                              //want data to split into two separate fields 
		  });
	  }
  });
  $('#department_field').typeahead({});
});
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-3-typeahead/4.0.2/bootstrap3-typeahead.min.js"></script>
if(count($results)){
$sugge = [];
  foreach($results as $user){
    $temp =[];
    $temp["department"] = $user->department[0];
    $temp["mail"] = $user->mail[0];
    $sugge[] = $temp;
  }

  $result["data"] = $sugge;
  $result["success"] = 1; 

  foreach($result["data"] as $user){
    $data[] = "{$user["mail"]} - {$user["department"]}" ; // I need the mail and department in 2 different fields
  }
  return response()->json($data);
}

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Объявите две переменные:

var f1 = {};
var f2 = {};

в вашем ответе:

f1 = data.field1;
f2= data.field2;
0 голосов
/ 05 ноября 2019

Это решение вышеуказанной проблемы, которое позволяет передавать значения из цикла foreach как объект данных и, как результат, получать его в сценарии с помощью пользовательских данных data.mail и data.department.

foreach($result["data"] as $user){
  //$data[] = "{$user["mail"]}" ;
  if($user['mail'] != null ){
    $data['mail'][] = $user['mail'];
    $data['department'][$user['mail']] = $user['department'];
  }
}

<script>
  $(document).ready(function(){
  $('#mail_field').typeahead({
    source:  function (query, process) {
    return $.post('http://127.0.0.1:8000/api/userdetailstypeahead', { query: query }, 
    function (data) {
        //console.log(data.mail);
        //console.log(data.department);
        window.department = data.department;
        return process(data.mail);
      });
  },
  afterSelect : function(value){
    console.log(window.department[value]);
    //console.log(value);
    //console.log(window.department);
    $('#department_field').val(window.department[value]);
  }
});
});
</script>
...