2015-09-03 66 views
1

我正在使用Igor Escobar的jQuery遮罩插件(https://github.com/igorescobar/jQuery-Mask-Plugin),並且我正在嘗試向遮罩添加後綴以在輸入值的末尾顯示%符號。是否可以爲jQuery遮罩添加後綴?

我正在建立的應用程序是爲巴西用戶,那麼我必須使用這種數字格式:000.000,00。其中,(逗號)是小數點分隔符,.(點)是千位分隔符。

我寫了下面的代碼來應用蒙版,但還沒有在其末尾添加%符號。

$('.mask-decimal').each(function() { 
    var $self = $(this); 
    var precision = parseInt($self.data('precision'), 10) || 2; 
    var mask = '#.##0,' + (new Array(precision + 1).join('0')); 
    $self.mask(mask, { 
     reverse : true, 
     maxlength : false 
    }); 
    $self.on('keyup', function() { 
     var val = this.value; 
     if (val) { 
      if (val.length <= precision) { 
       while (val.length < precision) { 
        val = '0' + val; 
       } 
       val = '0,' + val; 
      } else { 
       var parts = val.split(','); 
       parts[0] = parts[0].replace(/^0+/, ''); 
       if (parts[0].length === 0) { 
        parts[0] = '0'; 
       } 
       val = parts.join(','); 
      } 
      this.value = val; 
     } 
    }); 
}); 

這個面具完美的作品。

我試圖做的是在面具的末尾添加百分比符號,然後在我的keyup處理程序的開始處將其刪除,最後在返回值之前再次追加它。我基本上改變了這些行:

var mask = '#.##0,' + (new Array(precision + 1).join('0')) + '%'; 

var val = this.value.replace('%', ''); 

this.value = val + '%'; 

變化,我可以輸入在字段中的值,但我不能清楚/使用退格改變它之後。如果我足夠快,我可以選擇整個內容並將其刪除,但對於普通用戶來說這是一個糟糕的解決方案。它發生在這種情況下,因爲光標總是停留在輸入的末尾,並且鍵盤事件很快就會被觸發。

考慮到這一點,有一種方法可以將光標移動到輸入內的特定位置?有人可以看到另一種方式來改變我的功能,所以用戶可以使用退格鍵清除輸入內容嗎?

回答

2

如果這是一個輸入字段,並且%符號僅用於修飾,則可以在輸入上方放置一個包含該符號的範圍。因爲它純粹是一個顯示項目,對嗎?或者你可以在輸入後有符號。

如果用戶不應該能夠編輯它,那麼絕對不需要在輸入中輸入它。這對用戶和邏輯都是違反直覺的。

在這裏,我把標誌放在標籤內,以便點擊它將激活輸入字段。

label, input { 
 
    font-size:18px; 
 
    font-family:sans-serif; 
 
} 
 

 
label { 
 
    margin-left:-24px; 
 
} 
 

 
input { 
 
    text-align:right; 
 
    padding-right:24px; 
 
}
<input type="text" id="number" value="123"> 
 
<label for="number">%</label>

+0

謝謝您的回答一月事實上,我使用的引導,這樣我就可以使用輸入加上了點。我只想知道是否可以將項目所有者請求的'%'符號附加到輸入值。如果沒有其他答案出現,我會照你的建議去做。 –

+0

當然,這是可能的,你已經做到了。但是你有這個問題,因爲這是個壞主意。你的產品所有者應該告訴你他們想要達到的目標,而不是你應該怎麼做。他們缺乏做出這些決定的技術知識。 – Jan

+0

@GustavoStraube請參閱http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem如果這是您的項目管理設置(項目經理告訴您該怎麼做,而不是他們想要的),如果我是你,我會請求修改這個過程。我無法強調這一點,項目業主(通常)在技術上沒有資格以這種方式提出請求,並且肯定會確保質量較低的產品。爲了您和您的客戶,請修改您的決策流程。 – Jan

相關問題