2017-01-23 7 views
3

私のフォーム要素は、最初の入力を除いて自動次のフォーカスで動作します。私の最初の入力にはデータリストがあり、リストを選択したときにはnext(datepicker)入力にはフォーカスしません。しかし、私が2番目の入力から始めると、私のオートフォーカス機能はうまく動作します。どのように処理できますか?そして、私はまた、codepenデータピックアップにデータリストを自動的にフォーカス

$(document).ready(function() { 
 

 
$('.flexdatalist').flexdatalist({ 
 
    minLength: 0, 
 
    searchContain: true, 
 
    }).on('select:flexdatalist', function() { 
 
    $('#checkin').focus(); 
 
    }); 
 

 

 
    var assignPicker = function(id, whenClosed) { 
 
    if (typeof whenClosed !== 'function') { 
 
     whenClosed = null; 
 
    } 
 

 
    return new Pikaday({ 
 
     numberOfMonths: 2, 
 
     field: document.getElementById(id), 
 
     format: "DD.MM.YYYY", 
 
     minDate: new Date(), 
 
     firstDay: 1, 
 
     maxDate: new Date(2020, 12, 31), 
 
     onSelect: function() { 
 
     e = this.getDate(); 
 
     }, 
 
     onClose: whenClosed 
 
    }); 
 
    } 
 

 
    assignPicker('checkin', function() { 
 
    $('#checkout').focus(); 
 
    }); 
 
    assignPicker('checkout', function() { 
 
    $('#select').focus(); 
 
    }); 
 

 
});
body { 
 
    padding: 30px; 
 
} 
 
input, 
 
select { 
 
    width: 100%; 
 
    padding: 10px; 
 
    border: 1px solid #ccc; 
 
}
<html lang="en"> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta http-equiv="X-UA-Compatible" content="IE=edge"> 
 
    <meta name="viewport" content="width=device-width, initial-scale=1"> 
 
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> 
 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.5.1/css/pikaday.min.css" /> 
 
    <link rel="stylesheet" href="http://cdn.anitur.com.tr/example/flexdatalist/flexdatalist.css" /> 
 

 

 

 

 
</head> 
 

 
<body> 
 

 

 
    <div class="container"> 
 

 

 
    <div class="row"> 
 

 
     <div class="col-lg-3 col-md-3 col-sm-3"> 
 
     <input type="text" name="" class='flexdatalist' data-min-length='1' list='languages' name='language' /> 
 
     <datalist id="languages"> 
 
      <option value="PHP">PHP</option> 
 
      <option value="JavaScript">JavaScript</option> 
 
      <option value="Cobol">Cobol</option> 
 
      <option value="C#">C#</option> 
 
      <option value="C++">C++</option> 
 
      <option value="Java">Java</option> 
 
      <option value="Pascal">Pascal</option> 
 
      <option value="FORTRAN">FORTRAN</option> 
 
      <option value="Lisp">Lisp</option> 
 
      <option value="Swift">Swift</option> 
 
      <option value="ActionScript">ActionScript</option> 
 
     </datalist> 
 
     </div> 
 
     <div class="col-lg-3 col-md-3 col-sm-3"> 
 
     <input type="text" class="checkin" id="checkin" /> 
 
     </div> 
 
     <div class="col-lg-3 col-md-3 col-sm-3"> 
 

 
     <input type="text" class="checkout" id="checkout" /> 
 
     </div> 
 
     <div class="col-lg-3 col-md-3 col-sm-3"> 
 

 
     <select name="select" id="select"> 
 
      <option value="0">Choose</option> 
 
      <option value="1">1</option> 
 
      <option value="2">2</option> 
 
      <option value="3">3</option> 
 
      <option value="4">4</option> 
 
      <option value="5">5</option> 
 
      <option value="6">6</option> 
 
      <option value="7">7</option> 
 
     </select> 
 
     </div> 
 

 
    </div> 
 

 

 
    </div> 
 

 

 

 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
 
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> 
 

 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pikaday/1.5.1/pikaday.min.js"></script> 
 

 
    <script src="http://cdn.anitur.com.tr/example/flexdatalist/flexdatalist.js"></script> 
 

 
</body> 
 

 
</html>

+1

あなたの問題が変更した後、あなたがチェックインに焦点を当て、その後すぐに、実際に私はそれを –

+0

後にフォーカスを変更するイベントを定義することです。 –

答えて

1

あなたのコードの大部分はOKでした。

このソリューションのコアはonCloseとは反対に、pickadayの構成の内onSelectを使用してvarせずにassignPicker関数を定義していました。

https://codepen.io/anon/pen/VPWaJo

+0

私はそれが素晴らしい例であることを理解していますが、selectの後にトリガーに焦点を当てていない理由を理解できなかったことがあります –

0

上の共有データリストのための入力タグを修正してください。このように:私はhttp代わりのhttps上でファイルをロードするすべての問題に対処した後

<form action="" method="get"> 
    <input list="languages" name="languages"> 
     <datalist id="languages"> 
     <option value="PHP"> 
     <option value="JavaScript"> 
     <option value="Cobol"> 
     <option value="C#"> 
     <option value="C++"> 
     <option value="Java"> 
     <option value="Pascal"> 
     <option value="FORTRAN"> 
     <option value="Lisp"> 
     <option value="ActionScript"> 
     </datalist> 
    </form> 
+0

何も変更を定義することができるかわからない、チェックアウトに焦点を当ててクリック –

+1

あなたのjsスクリプトの変更。 focus()の代わりに**。trigger( "click")**を使用してください。 ** onSelect:** onCloseの場所で**を使用します。それがあなたのために働くことを願っています。 – Akydev

関連する問題