2016-07-14 101 views
0

我已经在下拉选择中调用了以下javascript函数。 基本上我的要求是,可以有很多vndrCd。 但是,当第一次vndrCd是“SFGL”时,警报不应该打开。 如果“SFGL来了第二次则警报应该来的。我不能把这种情况作为调用的方法是在每一次点击。有没有一种方法可以让我实现这一目标。第二次显示提醒

function GetOptions(var1) { 
    varId = var1.id; 

    var vndrNbrCdList = document.getElementById('TouchCellDetailForm:vendorNbrCodeList').value; 
    var splitVndrList = vndrNbrCdList.split(','); 

    if (var1.value == '0') { 
     varhiddBox.value = '0'; 
     return; 
    } 

    for (var j = 0; j < splitVndrList.length; j++) { 
     if (splitVndrList[j].split('-')[0] == (var1.value)) { 
      var vndrCd = splitVndrList[j].split('-')[1]; 
      break; 
     } 
    } 

    localStorage.setItem("vendorName", vndrCd); 
    var vendorName1 = localStorage.getItem("vendorName"); 
    if (vendorName1 == 'SFGL') { 
     alert("Salesforce vendor has already been selected.Please select some other vendor"); 
    } 

} 

回答

0

你可以用封闭来保存私有变量来表示'SFGL'是否已经遇到或没有:

function GetOptionsHelp() { 
    'use strict'; 

    let called = false; 

    return function GetOptions(var1) { 
     // ... your code block 
    if (vendorName1 == 'SFGL') { 
     if (called) { 
      alert("Salesforce vendor has already been selected.Please select some other vendor"); 
     } else { 
      called = true; 
     } 
    } 
} 

你可以这样调用GetOptionsHelp()(var1)

0

功能试着做这样的事情作为一个简单的SOLU重刑:

(function() { 
     var firstTimeFlag = true; 

     function GetOptions(var1) { 
      varId = var1.id; 

      var vndrNbrCdList = document.getElementById('TouchCellDetailForm:vendorNbrCodeList').value; 
      var splitVndrList = vndrNbrCdList.split(','); 

      if (var1.value == '0') { 
       varhiddBox.value = '0'; 
       return; 
      } 

      for (var j = 0; j < splitVndrList.length; j++) { 
       if (splitVndrList[j].split('-')[0] == (var1.value)) { 
        var vndrCd = splitVndrList[j].split('-')[1]; 
        break; 
       } 
      } 

      localStorage.setItem("vendorName", vndrCd); 
      var vendorName1 = localStorage.getItem("vendorName"); 
      if (vendorName1 == 'SFGL') {      
       if(!firstTimeFlag) { 
        alert("Salesforce vendor has already been selected.Please select some other vendor");       
       } 
       firstTimeFlag = false; 
      } 

     } 
}()); 
+0

我该如何给这个功能打电话? – themaster

+0

它将在应用程序开始时自动调用。这种类型的函数被称为IIFE(立即调用函数表达式)。 –