我有以下代码:http://jsfiddle.net/ntywf/1987/
{{1}}
我想要的是在插入时删除“ - ”符号。会发生什么是光标始终是最后一个小数家。我只想让这段代码不让用户输入负数。我怎样才能做到这一点? (问题是在输入中移动光标,因为它总是发送到最后一个字符)
答案 0 :(得分:1)
您可以使用KeyCode(Link)来验证您按下了哪个键,并使用replace
将其删除:
$('input').keyup(function(e) {
var code = e.keyCode || e.which;
if(code == 109 || code == 189) { //Enter keycode
//Do something
var valor = $(this).val();
$(this).val(valor.replace(/[-]/g, ''))
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<input type="text"/>
答案 1 :(得分:0)
使用type = "numeric"
和min="0"
这样您就可以阻止文本字段接受字母表。 min = 0 将始终确保它永远不会接受-ve value。
<input type="number" min="0"/>
JSFIDDLE DEMO会对您有所帮助。
答案 2 :(得分:0)
这是我尝试过的。
JS
$('input').keyup(function() {
var $th = $(this).val();
$th = $th.replace(/[-]/g, "");
$(this).val($th)
console.log( $(this).val());
});
它将删除 - 从数据中签名。
答案 3 :(得分:0)
这应该可以解决您的问题
我所做的是:
setSelectionRange()
,其中设置元素中当前文本选择的开始和结束位置。(来自MDN)MDN参考:https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement/setSelectionRange
JS代码:
$(document).ready(function () {
$('input').keyup(function() {
var $th = $(this);
$th.val( $th.val().replace(/[-]/g, function(str) {
//alert('You typed " ' + str + ' ".\n\nPlease use only letters and numbers.');
return '';
} ) );
$('input')[0].setSelectionRange(0, 0); //this method sets the range to zero text starting from 0 index to 0 index
});
});