2010-08-19 2 views
3

Возможно ли изменить значение <input type="text">, которое было скрыто в стиле display:none? У меня есть JS, который, похоже, работает, когда вход <input type="hidden">, но не тогда, когда он скрыт с display:none. И AFAIK, вы не можете изменить тип ввода с помощью JS.Изменить значение дисплея: нет ввода?

В принципе, я хочу заменить <input> на <select>, поэтому я пытаюсь скрыть его и добавить элемент <select>.


Посмотрите на http://jsfiddle.net/5ZHbn/

Осмотрите <select> элемент с поджигатель. Посмотрите на скрытый вход рядом с ним. Измените значение выбора. Скрытый ввод не изменяется. Является ли Firebug мне?

Если вы раскомментируете другие строки кода, то он работает.

На самом деле ... Я уверен, что это is ошибка в Firebug сейчас. Большинство других вещей правильно обновляется, но firebug не показывает обновленное значение, когда я его проверяю.

+0

Как вы относитесь к выбору? если вы используете .innerHTML, он будет терпеть неудачу во всех версиях IE. – scunliffe

+0

@scunliffe - он добавляет сам выбор, а не * в * выбор. – Matchu

+0

@Matchu ах, правда ... Я неправильно понял, что ... – scunliffe

ответ

5

Я думаю, что это ошибка Firebug.

Это потому, что если я запрос (через консоль) значение входного текстового поля это на самом деле обновленный, это просто, что Firebug не отражает обновленное значение в HTML-закладки ,

В самом деле, используя РОМ вкладку нового значения есть, даже если значение фактического узла в закладке HTML- не было обновлено.

Это похоже на то, что вы используете "нормально видимый" элемент (например, тип ввода = "текст") или аналогичный. Если вы вместо этого используете «обычно скрытый» элемент (например, тип ввода = «скрытый»), Firebug обновляет его значение как обычно.

Я думаю, что это ошибка в Firebug, который, кажется, не обновляет значение элемента на, если он обычно виден, но теперь скрыт с помощью CSS: я говорю конкретно это, потому что вход с типом = «скрытым» и display: none обновляется, тем не менее, так что это не просто проблема элементов, скрытых с помощью дисплея: none.

Надеюсь, это поможет, я собираюсь выпустить эту ошибку для парней Firebug.

UPDATE: Я использую Firebug 1.8.4 на Firefox 8 на Win Srv 2K3.

+0

приятный ответ спасибо, что помог мне – Jalpesh

4

Изменение значения поля должно работать должным образом, независимо от стилей CSS. Вероятно, проблема в другом месте.

+0

согласился. JavaScript имеет полный контроль, чтобы установить значение в любое время. – scunliffe

+0

@scunliffe: Это не совсем так. Я точно знаю, что вы не можете изменить значение входов 'file'. – mpen

+0

@Mark - Я думаю, что @scunliffe говорил в контексте полей, которые Javascript может вообще изменить. – Matchu

3

Вы можете изменить его, как обычно:

document.getElementById('myinput').value = 'Hello'; 
0

Один из вариантов у вас есть помещает в поле ввода внутри DIV, а затем с помощью JavaScript, чтобы изменить содержимое дел. Например:

<html> 
<head> 
<title>Input Text To Dropdown Box</title> 
<script type="text/javascript"> 
function swap() { 
document.getElementById("contentswap").innerHTML = "<select><option value='cats'>Cats</option><option value='dogs'>Dogs</option></select>"; 
} 
</script> 
<style> 
#contentswap { 
display:inline; 
} 
</style> 
</head> 
<body 
<div id="contentswap"> 
<input type="text" name="original"> 
</div> 
<br /> 
<input type="button" value="Input To Select" onClick="swap()"> 
</body> 
</html> 
1

У меня возникла эта проблема при настройке настраиваемого поля параметров magento, я сделал некоторые правила из некоторых пользовательских входов выбора и вам нужно было сохранить окончательное значение в скрытом настраиваемом текстовом поле. По какой-то причине это не сработало, если поле было «display: none» (возможно, из-за jQ?), Но это сработало, когда я изменился на «visibility: hidden».

Я знаю, что мой ответ является особенным, я попытался сделать комментарий, но не имею достаточной репутации. Надеюсь, это поможет кому-то.

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