2016-08-04 5 views
2

Add Another Workerボタンをクリックしたときに、max_fieldsに達した後にsessionStorageが値を保存しないようにする方法を知りましたか?限界に達してボタンが再びクリックされたようですが、値がsessionStorageに追加され続けています。これをどうやって止めることができるのだろうと思っていました。ここで制限値に達した後にsessionStorageが値を保存しないようにする方法

は私のjsfiddle https://jsfiddle.net/p2euLqbf/4/

HTML

<ul> 
    <li> 
     <div class="worker-container-last"> 
      <label class="worker-label"> 
       <select name="title[]" class="title"> 
        <option value="Select a Title" selected="selected">Select a Title</option> 
        <option value="Boss">Boss</option> 
        <option value="Worker">Worker</option> 
        <option value="Manager">Manager</option> 
       </select> 
      </label> 
     </div> 
     <div class="add-more"></div> 
     <div><a class="worker" title="" href="">Add Another Worker</a></div> 
    </li> 
</ul> 

へのリンクであるjQueryの

var worker_record = []; 
$(document).ready(function(){ 
    workerData(); 
    $('.worker').on('click', function(e){ 
     e.preventDefault(); 
     e.stopPropagation(); 

     var title = $('.title:first').val();    

     var someData = {title: title}; 
     worker_record.push(someData); 

     sessionStorage.worker = JSON.stringify(worker_record); 
     workerData(); 
    }); 

    function workerData(){ 
     var max_fields = 6; 
     var x = 1; 

     if(!(typeof sessionStorage.worker === 'undefined' || sessionStorage.worker.length<1)){ 
      worker_record = JSON.parse(sessionStorage.worker); 
     } 

     $('.add-more').empty(); 
     for(var i=0; i<worker_record.length; i++){ 
      if(x < max_fields){ 
       x++; 
       var title = worker_record[i].title; 

       var worker = '<select name="title[]" class="title title-options"><option value="Select a Title" selected="selected">Select a Title</option><option value="Boss">Boss</option><option value="Worker">Worker</option><option value="Manager">Manager</option></select>'; 

       $('.add-more').append(worker); 
       $('.title:eq('+$('.title-options').length+')').val(title); 
      } 
     } 

     $('.title:first').val('Select a Title'); 
    } 
}); 

答えて

4

あなたがこれを行うことができます制限を設定するには。

変数最初

if (sessionStorage.getItem("limit") === null) { 
    sessionStorage.setItem('limit', 0); 
} 

インクリメント反復ごとに、この変数の値を設定し、それに応じて制限のチェックを設定 あなたがlimit = 10を設定すると仮定し、

if(sessionStorage.getItem('limit') <= 10) 
{ 
var count = sessionStorage.getItem('limit'); 
    count++; 

sessionStorage.setItem('limit', count); 

    //do whatever 

} 
else{ 

    alert("session limit reached!"); 
    return false; 

} 

Working Demo

enter image description here

+0

正確に 'sessionStorage.setItem( 'limit'、0);'ありがとう、 – obi

+0

@obi:答えで追加されました –

+0

@obi:変数が設定されているかどうかを確認してください。あなたが好きなところにそれを設定してください。また、最初の反復で値1を設定することもできます。 –

関連する問題