2016-11-22 4 views
0

TypeaheadBasic :: widget 확장 프로그램이 자동 완성 기능을 사용하지만 입력을 제한하고 싶습니다. 배열에 포함 된 항목 만 허용하려고합니다.typeaheadbasic yii2 확장 프로그램에서 입력을 제한하는 방법

아래 코드는 제 코드입니다.

use kartik\typeahead\TypeaheadBasic; 
echo TypeaheadBasic::widget([ 
     'model' => $model, 
     'attribute' => 'client', 
     'data' => $clientData, 
     'options' => ['placeholder' => 'Filter as you type ...', 'id'=>'client_id_name'], 
        'pluginOptions' => ['highlight' => true], 
       ]); 

제게 해결책을주십시오. 감사 사전!

+0

가 경쟁 문제 이상으로 처리하는 것입니다 w "저장소 선택"부분 .http : //demos.krajee.com/widget-details/typeahead. – yafater

답변

1

사용자가 일련의 옵션 중에서 선택하도록 허용하려면 Select2을 사용하지 않는 것이 좋습니다. 이렇게하면 사용자가 옵션을 필터링하고 그 중 하나를 선택하기 위해 입력 할 수 있습니다.

하지만

여기

내이다 나는이 적절한/표준 방법인지 모른다 ..하지만 나를 :)을 위해 잘 작동 :

내 위의 질문에 대한
+0

예 @marche 네 말이 맞아! –

0

대체 솔루션은 다음과 같습니다 : typeheadbasic 확장

여기
$clientData = $my_dynamic_data_arr; // this arr var i used in jquery script for chekcing if name is exists or not 
    echo TypeaheadBasic::widget([ 
         'model' => $model, 
         'attribute' => 'client', 
         'data' => $clientData, 
         'options' => ['placeholder' => 'Filter as you type ...', 'id' => 'client_profile'], 
         'pluginOptions' => ['highlight' => true], 
        ]); 

내 JQuery와 스크립트

var client_arr = $.makeArray(<?php echo json_encode(array_values($clientData)); ?>); // $clientData is php array variable from above 

    $("#clientProfileForm").submit(function(event) { 
     var client_name = $("#client_profile").val(); 
     if ($.inArray(client_name, client_arr) === -1) { 
      $("#clientProfileError").html("<spna style='color:red'>Client not exists</span>"); 
      return false; 
     } 
     if ($('#client_profile').val() === '') { 
      event.preventDefault(); 
      $("#clientProfileError").html("<spna style='color:red'>Client name is required</span>"); 
     } 
    });