2013-12-24 7 views
1

Редактор формы текстовой области - это букмарклет, который позволит пользователю изменять размер текстового поля. Например.Изменение размера текстового поля с помощью букмарклета

javascript: (function() { 
    var i, x; 
    for (i = 0; x = document.getElementsByTagName("textarea")[i]; ++i) x.rows += 5; 
})() 

Но я ищу букмарклет, который позволит мне изменить размер текстового поля. Например. на the following page Я хотел бы увеличить размер полей ввода имени и электронной почты.

+0

В чем проблема с букмарклетом на странице you ar е ссылаясь на? В моем браузере Firefox 17.0.11ESR можно изменять размеры текстовых входов, а также текстового поля. – Palec

+0

Использование firefox 26 на окнах. Ваш os? – shantanuo

+0

Debian Linux. Я просто следую инструкциям на этой странице - щелкните букмарклет и перетащите правый край ввода электронной почты. Изменение курсора подсказывает мне о его перетаскивании. – Palec

ответ

1

Это изменилось поля ввода так, как я хотел:

javascript:(function(){var%20i,x;%20for(i=0;x=document.getElementsByTagName("INPUT")[i];++i)%20x.size%20+=%2035;%20})() 
0

Я думаю, что вы приближаетесь к нему не лучшим образом. Ваша функция букмарклета должна вызывать некоторые внешние JavaScript, и вы должны поместить всю свою логику в этот скрипт. В этом случае отладка сценария должна быть проще для вас.

Рассмотрим этот пример кода:

<a href="javascript:(function(){ script=document.createElement('SCRIPT');script.src='http://path/to/your/JS';document.body.appendChild(script);})()"> This is a sample bookmarklet </a> 

Так что теперь глобальные JS файл, который вы в том числе, должны содержать ваши JS и всю логику. После того, как вы сделали это, выполните вышеуказанные шаги с помощью плагина. На этот раз вставьте точки разрыва в нужные места, чтобы отладить ваш код.

1

Из того, что я знаю, нет способа сделать это. Можно использовать CSS resize:both; overflow: auto;, но это не работает в разных браузерах. (Возможно, я doing something wrong).

Одним из способов может быть замена всех полей ввода грязной копией, но это, по-видимому, является кандидатом на нарушение существующих сценариев (родных на странице и т. Д.). В качестве примера элемент больше не будет иметь тип «текст», и если родной скрипт полагается на это, он сломается. Приемники событий будут нарушены, и т.д.

Во всяком случае, если один все еще хочет, быстрый первый проект может быть, возможно, something like this:

(function() { 
    var x, n, i = 0, 
     t = document.createElement('TEXTAREA'); 
    t.rows = 3; 
    while ((x = document.getElementsByTagName('INPUT')[i])) { 
     if (x.type === "text") { 
      n = x.parentNode.insertBefore(t.cloneNode(), x); 
      x.parentNode.removeChild(x); 
      n.id = x.id; 
      n.name = x.name; 
      n.innerText = x.value; 
     } else { 
      ++i; 
     } 
    } 
})(); 

Или, как букмарклет:

javascript:(function(){var x,n,i=0,t=document.createElement("TEXTAREA");t.rows=3;while((x=document.getElementsByTagName("INPUT")[i]))if(x.type==="text"){n=x.parentNode.insertBefore(t.cloneNode(),x);x.parentNode.removeChild(x);n.id=x.id;n.name=x.name;n.innerText=x.value}else++i})(); 
+0

Этот букмарклет - именно то, что я искал. Но он меняет поле ввода на textarea и изменяет макет веб-страницы. Мне нужно немного расширить его вправо на 10 символов. – shantanuo

+0

Другими словами, просто добавьте size = 35 в input type = "text" – shantanuo

+0

@shantanuo: Да. Я неправильно читаю ваш Q, поскольку вы хотели изменить его в обоих направлениях (строки, а также столбцы). Не знаю, как мне это удалось. – Runium

Смежные вопросы