Согласно спецификации HTML 4.01 , wrap
не является допустимым атрибутом для <textarea>
с, что объясняет, почему это так сложно и странно. Похоже, что Firefox действительно использует атрибут wrap
, но он не позволит вам его изменить.
Хотя у меня есть решение! Это довольно ужасно, но вот оно. Полностью замените текстовое поле на новое.
// this is the onclick handler for your button
document.getElementById("nowrapButton").onclick = function() {
var oldOne = this.form.content; // the old textarea
var newOne = document.createElement('textarea'); // the new textarea
var attrs = ['name', 'rows', 'cols']; // these are the attributes to keep
for (var i = 0; i < attrs.length; ++i) {
// copy the attributes to the new one
newOne.setAttribute(attrs[i], oldOne.getAttribute(attrs[i]));
}
// toggle the wrapping on and off
if (oldOne.getAttribute('wrap') != 'off') {
newOne.setAttribute('wrap', 'off');
}
// copy the text over
newOne.value = oldOne.value;
// add the new one
oldOne.parentNode.insertBefore(newOne, oldOne);
// get rid of the old one
oldOne.parentNode.removeChild(oldOne);
return false;
};
Вот рабочая версия, с которой вы можете играть: http://jsbin.com/ugepa
Как обычно, в jQuery это было бы намного лучше. :)