我有一個要求,我只需要在文本框中只允許輸入數字。我還將文本框中的數字數量限制爲一定長度,如6
。我也想允許只粘貼數字而不粘貼其他數字。例如,我複製一個數字粘貼123456
這應該是允許的。假設我有一個數字(例如.123 454
或123$234
),其中包含空格或其他字符,它不應該允許並引發錯誤。我還想修剪數字中的空格,因爲文本框的值將更新爲數據庫。請建議如何實現這一點。只允許將數字和限制複製粘貼到文本框中的數字
0
A
回答
0
這是一個只匹配數字的正則表達式:^\d+$
。
這裏是一個類似於你想實現什麼樣的回答另一個問題:Restricting input to textbox: allowing only numbers and decimal point
0
您可以通過正則表達式模式驗證它! 在JavaScript中, 創建正則表達式的對象像
var patt=new RegExp(pattern,modifiers);
或
function onlyNumbers(evt)
{
var e = event || evt;
var charCode = e.which || e.keyCode;
if (charCode > 31 && (charCode < 48 || charCode > 57))
return false;
return true;
}
1
這絕對是一個黑客,但它是迄今爲止我發現,以限制複製/粘貼內容的唯一方法。它的當前狀態也會丟失光標位置。我使用jQuery,但沒有必要。你做什麼,是當你檢測粘貼(通過Ctrl + V或element.on('粘貼'))。然後,您選擇文本,獲取選擇內容,清理,將值分配回元素。
這裏有一個plunkr:http://plnkr.co/edit/ohgliFudb9hPTYr4w8yY 下面是一些代碼:
$(function(){
var acceptableChars = {8: 'backspace', 9: 'tab', 13: 'enter', 17: 'ctrl',
18: 'alt', 27: 'esc', 16: 'shift', 33: 'pageup', 34: 'pageDown', 35: 'end',
36: 'home', 37: 'left', 38: 'up', 39: 'right',40: 'down', 46: 'delete',
48: '0', 49: '1', 50: '2', 51: '3', 52: '4', 53: '5', 54: '6', 55: '7',
56: '8', 57: '9'},
valsArr = $.map(acceptableChars, function (key, val) { return key; }),
ctrlPressed = false,
element = $('#pasteme');
element.on('paste', function (e) {
setTimeout(function() {
var elVal, formattedVal;
element.select();
elVal = document.getSelection().toString();
formattedVal = formatter(elVal);
setValue(formattedVal);
}, 0);
});
element.on('keydown keypress', function(e) {
if (e.which === 17) {
ctrlPressed = true;
}
$('.textme').text(!!acceptableChars[e.which] || ctrlPressed);
return !!acceptableChars[e.which] || ctrlPressed;
});
element.on('keyup', function(e){
if (e.which === 17) {
ctrlPressed = false;
}
})
function setValue(val) {
console.log(val);
element.val(val);
setTimeout(function(){ element.val(val) },0);
setTimeout(function(){ element.val(val) },10);
}
function formatter(val) {
var newStr, val;
newStr = [];
Array.prototype.slice.call(val).forEach(function(char, i) {
if (~valsArr.indexOf(char)) {
newStr.push(char);
}
});
console.log(newStr, val);
return newStr.join('');
};
});
相關問題
- 1. 只允許使用JavaScript輸入數字並允許複製和粘貼?
- 2. 不允許複製和粘貼文本框中的小數和文本值
- 3. 在數字文本框中限制字符串的複製粘貼
- 4. 限制HTML輸入只允許粘貼
- 5. 限制輸入數字只在粘貼
- 6. 將WPF文本框剪切,複製和粘貼受限制
- 7. 如何限制在文本框中粘貼的字符數?
- 8. 允許將數據粘貼到WPF文本框中
- 9. 如何只允許文本框中的十進制數字
- 10. 如何在MFC中限制文本框中的複製粘貼?
- 11. 使用逗號在Kendo數字文本框中複製粘貼數字
- 12. iOS9:UITextField不允許複製/粘貼
- 13. 在html輸入字段中只允許英文字符和nr。這是有效的和複製/粘貼
- 14. 流星控制在文本字段中複製和粘貼
- 15. 文本框掩碼只允許數字
- 16. 只允許在文本框C#數字
- 17. AngularJS問題只允許將數字輸入到文本框中
- 18. 複製/粘貼時,Flex spark TextArea限制最大字符數
- 19. 限制對文本框的輸入:僅允許數字和小數點
- 20. 如何限制表單提交只接受數字,同時允許粘貼到字段
- 21. 粘貼字符限制
- 22. 如何限制WPF文本框中的數值粘貼
- 23. 如何僅使用jQuery在輸入文本字段中允許數字(即使在複製粘貼時)?
- 24. 多語言文本複製/粘貼到WinForms中的文本框?
- 25. 在Python中複製和粘貼文本
- 26. Dojo富文本編輯器中允許的字符數限制
- 27. 只允許數字和ctrl + a,ctrl + v,ctrl + c到文本框
- 28. 限制在文本框中允許的字符(輸入金額)
- 29. ASP.NET文本框 - 避免複製少量字符的粘貼
- 30. 文本框中的字數限制
只是值得一提的是,儘管你如何在瀏覽器中做到這一點與JavaScript,你也應該檢查服務器上的響應,如JavaScript可以禁用或覆蓋在瀏覽器中。 – AlexS
你可以使用字符/鍵碼來做到這一點。
請參閱此[工作示例]。(http://jsfiddle.net/euLQA/1/) –