preventDefault()无效,给对象不支持此属性

时间:2012-03-02 09:00:08

标签: jquery

我想将文本框的最大长度设置为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();

    }
}

4 个答案:

答案 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)

如果你需要支持旧的Internet Explorer版本,

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(); }
             });
    });

Demo