我想将文本框的最大长度设置为7并停止进一步输入和使用preventDefault,但是它给出错误 我的代码在下面
function crInputRK(ctrlid, ControlValue, size, clsName) {
var newTextBox = crE('input');
newTextBox.type = 'text';
newTextBox.style.fontSize = ".9em";
newTextBox.style['width'] = size;
newTextBox.style['height'] = '12px';
newTextBox.style['float'] = 'none';
newTextBox.style['margin'] = '0 0 0 10px';//added on 13feb2012
//newTextBox.maxLength = '3';
newTextBox.id = ctrlid;
newTextBox.className = 'inputDate';
//newTextBox.onchange = "javascript:return EnableButton();";
//ControlValue = getControlValue(ctrlid);
if (ControlValue != "")
newTextBox.value = ControlValue;
if (ControlValue == "Multiple")
newTextBox.disabled = true;
newTextBox.setAttribute("onkeypress", "javascript:SetMaxLength(event,this);");
return newTextBox;
}
function SetMaxLength(e, txtbox) {
var MaxLength = 7;
if (_$(txtbox.id).value.length >= MaxLength) {
e.preventDefault();
}
}
答案 0 :(得分:0)
只是一个选项:
var MaxLength = 7;
if (_$(txtbox.id).value.length >= MaxLength) {
_$(txtbox.id).value = _$(txtbox.id).value.substring(0, MaxLength);
}
答案 1 :(得分:0)
需要监视击键的输入字段需要在“on”(jQuery 1.7+)或“live”(jQuery 1.4.2-1.7)的范围内进行评估。如果不这样做,则仅在页面加载时评估输入字段。因此,您需要监视输入,例如......
function SetMaxLength(e,txtbox){
var MaxLength = 7;
$("#"+_$(txtbox.id)).live('keyup', function(e){
if (_$(txtbox.id).value.length >= MaxLength) {
e.preventDefault();
}
});
}
这将监视所有操作的字段,如果长度大于MaxLength,则不会执行默认操作。
答案 2 :(得分:0)
event.preventDefault
不是跨浏览器兼容的,请尝试使用事件(假设你有jQuery可用):
jQuery(newTextBox).bind('keypress', SetMaxLength);
然后,您的SetMaxLength
函数将在文本框的范围内运行,而不是将其作为参数传递:
function SetMaxLength(e, txtbox) {
var MaxLength = 7;
if (this.value.length >= MaxLength) {
return false; // or e.preventDefault();
}
}
答案 3 :(得分:0)
可以使用.preventDefault();
$("body").find("input[type=text]").each(function(k,v) {
$(this).on('keypress', function(event) {
limit = 7; //for example
val = $(this).val();
len = val.length;
if(len > limit-1) { event.preventDefault(); }
});
});