我目前正致力于限制数字文本字段中的允许输入。我检查输入字段值的长度,如果它是> =到maxlength属性,则不要输入任何内容。
$('input[maxlength]').on('keyup', '', null, function(event) {
var ref = $(this),
val = ref.val();
if ( val.length >= this.maxLength && event.which != 8){
return false;
}
}
但是,如果字段的当前值以小数结尾(例如" 4。"),那么val()方法返回" 4&#34 ;,这会抛出整个过程。如何在包含尾随小数点的同时读取输入字段的内容?
http://jsfiddle.net/n3fmw1mw/329/(输入' 4。'您将会看到我正在谈论的内容。)
编辑:我已经尝试过希尔先生的建议,现在我有了这个$('input[maxlength]').on('keydown', '', null, function(event) { //enforce maxlength on all inputs, not just text inputs
var ref = $(this);
ref.attr('type','text');
var val = ref.val();
if ( val.length >= this.maxLength && event.which != 8){
ref.attr('type','number');
return false;
}
ref.attr('type','number');
});
但是现在我的文本框中没有插入任何内容,即使调试并发现我们没有返回false。
答案 0 :(得分:3)
由于您的输入类型是数字,因此会删除小数。将输入类型设置为文本。
<input type="text" id="textbox1"/>
这是http://php.net/manual/en/function.password-verify.php。
修改强>
根据您无法更改来源的新要求,下面的代码应该指向正确的方向。
jQuery不允许您更改元素的类型。为此,您必须删除元素并在其位置添加正确的类型之一。下面的代码就是这样。
注意:为了使代码更具可重用性,我在您的元素中添加了一个类,然后使用该特定类编辑了所有元素。
// Add class to identify that element type needs changed
$("#textbox1").addClass("numberToText");
// Swap number type input with text
$('.numberToText').each(function() {
$("<input type='text' />").attr({
id: this.id,
name: this.name,
value: this.value
}).insertBefore(this);
}).remove();
$("#textbox1").keyup(function() {
$('#log').append("Value: " + $('#textbox1').val() + '<br/>');
});
$(".button").click(function() {
$('#log').append("Value: " + $('#textbox1').val());
})