Sunday, May 19, 2024
 Popular · Latest · Hot · Upcoming
117
rated 0 times [  122] [ 5]  / answers: 1 / hits: 47658  / 16 Years ago, wed, march 11, 2009, 12:00:00

I'm trying to set the maxlength on input fields dynamically using JavaScript. Apparently that is a problem in IE, and I found part of the solution.



$(input#title).get(0).setAttribute(max_length, 25);
$(input#title).get(0).setAttribute(
onkeypress,
return limitMe(event, this));

function limitMe(evt, txt) {
if (evt.which && evt.which == 8) return true;
else return (txt.value.length < txt.getAttribute(max_length);
}


It works in Firefox, but not in IE for some reason. However, it works on input fields set like this:



<input type=text max_length=25 onkeypress=return limitMe(event, this);/>


But since the input fields are created dynamically, I can't do this... Any ideas?


More From » html

 Answers
181

If you're using jQuery then why not make full use of its abstractions?



E.g.



Instead of:



$(input#title).get(0).setAttribute(max_length, 25);
$(input#title).get(0).setAttribute(
onkeypress,
return limitMe(event, this));
function limitMe(evt, txt) {
if (evt.which && evt.which == 8) return true;
else return (txt.value.length < txt.getAttribute(max_length);
}


Do this:



$('input#title').attr('maxLength','25').keypress(limitMe);

function limitMe(e) {
if (e.keyCode == 8) { return true; }
return this.value.length < $(this).attr(maxLength);
}





Edit: The reason it's not working in IE is probably because of how you attached the 'onKeyPress' handler, via setAttribute. - This isn't the proper way to register event handlers.


[#99866] Tuesday, March 3, 2009, 16 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
bobbyw

Total Points: 456
Total Questions: 102
Total Answers: 113

Location: Bahrain
Member since Fri, Sep 16, 2022
2 Years ago
;