2011-05-12 75 views
0

我已經得到了一系列代碼,這些代碼將用於聯繫表單中的大多數輸入項目;爲了代碼行,我希望將這個功能作爲一個函數來運行。這裏是塊的例子:如何將重複的代碼塊轉換爲函數

$('#country_code').blur(function() { 
var countryCode = $('#country_code').val(); 
    if(validateNumber(countryCode) == true) { 
     if(countryCode.lastIndexOf('+') != 0) { 
      countryCode = countryCode.replace('+', ''); 
      $('#country_code').val('+' + countryCode); 
     } 
    } 
    else { 
     countryCode = ''; 
     $('#country_code').val(countryCode); 
    } 
}); 

我想創建像函數如下:

function validateElements(elementName, variableName, validationFunction, indexValue, indexPosition) { 
    $(elementName).blur(function() { 
     var variableName = $(elementName).val(); 
     if(validationFunction(variableName) == true) { 
      if(variableName.lastIndexOf(indexValue) != indexPosition) { 
       variableName = variableName.replace(indexValue, ''); 
       $(elementName).val(indexValue + variableName); 
      } 
     } 
     else { 
      variableName = ''; 
      $(elementname).val(variableName); 
     } 
    }); 
} 

在我會打電話的功能類似如下:

validateElements('#country_code', 'countryCode', 'validateNumber', '+', 0); 
+4

而你的問題是? – DavidGouge 2011-05-12 14:09:51

+0

題目問題,我也很困惑 – locrizak 2011-05-12 14:14:20

+0

問題是:我該如何做這項工作?就目前而言,事實並非如此。 – Tony 2011-05-12 14:27:40

回答

0

嘗試改變它,以便您按以下方式調用您的功能:

validateElements($('#country_code'), 'countryCode', 'validateNumber', '+', 0); 

並改變你的功能:

function validateElements(obj, variableName, validationFunction, indexValue, indexPosition) { 
    obj.blur(function() { 
     var variableName = obj.val(); 
     if(validationFunction(variableName) == true) { 
      if(variableName.lastIndexOf(indexValue) != indexPosition) { 
       variableName = variableName.replace(indexValue, ''); 
       obj.val(indexValue + variableName); 
      } 
     } 
     else { 
      variableName = ''; 
      obj.val(variableName); 
     } 
    }); 
} 
+0

試了一下,仍然沒有運氣。 – Tony 2011-05-12 14:26:42

+0

要做的最好的事情是一次註釋一行代碼行,運行代碼並查看它何時有效。當你說「它不起作用」時,你的意思是模糊事件被調用,而事件內部的東西不正確,或者模糊事件從未被調用? – 2011-05-12 14:58:37