2012-01-19 3 views
0

Хорошо, нашел отличный код на Stack. Немного приспособились.дисплей поле ввода на новой линии (на основе радиовыхода)

Но в сущности у нас есть группа радио-ящиков в форме. При нажатии на один из этих переключателей отображается поле ввода.

Мне нужно показать это поле ввода на новой строке (желательно с новой меткой тоже), но борется.

Код: HTML

<div class="s_row_2 clearfix"> 
     <label><strong>Price</strong></label> 
      <div class="s_full"> 
       <label class="s_radio"><input type="radio" checked="checked" name="r" id="r1" onchange="disableTxt()"/> Free</label> 
       <label class="s_radio"><input type="radio" name="r" id="r2" onchange="disableTxt()"/> Swap/Trade</label> 
       <label class="s_radio"><input type="radio" name="r" id="r3" onchange="disableTxt()"/> Lets Talk</label> 
       <label class="s_radio"><input type="radio" name="r" id="r3" onchange="enableTxt()"/> Price</label> 
        <input type="text" name="r" id="price" style="display:none;width:212px;" size="30" placeholder="Type your price"/> 
      </div> 
    </div> 

ЯШ:

var temp = ''; 
    function disableTxt() { 
     var field = document.getElementById("price"); 
     if(field.value != '') { 
      temp = field.value; 
     } 
     field.style.display = "none"; 
     field.value = ''; 
    } 
    function enableTxt() { 
     document.getElementById("price").style.display = "inline"; 
     document.getElementById("price").value = temp; 
    } 

Fiddle: http://jsfiddle.net/ozzy/mnxRr/

По существу, я предпочел бы цену в качестве первого варианта. Таким образом, при отображении поля ввода ниже выбора радио с новой меткой.

Любые предложения, пожалуйста,

резюмировать жаль:

Я предпочитаю HTML так:

<div class="s_full"> 
       <label class="s_radio"><input type="radio" name="r" id="r3" onchange="enableTxt()"/> Price</label> 
        <input type="text" name="r" id="price" style="display:none;width:212px;" size="30" placeholder="Type your price"/> 
       <label class="s_radio"><input type="radio" checked="checked" name="r" id="r1" onchange="disableTxt()"/> Free</label> 
       <label class="s_radio"><input type="radio" name="r" id="r2" onchange="disableTxt()"/> Swap/Trade</label> 
       <label class="s_radio"><input type="radio" name="r" id="r3" onchange="disableTxt()"/> Lets Talk</label> 
      </div> 

ответ

1

Почему вы не просто изменить порядок кнопок радио?

<div class="s_full"> 
    <label class="s_radio"><input type="radio" name="r" id="r3" onchange="enableTxt()"/> Price</label> 
    <label class="s_radio"><input type="radio" checked="checked" name="r" id="r1" onchange="disableTxt()"/> Free</label> 
    <label class="s_radio"><input type="radio" name="r" id="r2" onchange="disableTxt()"/> Swap/Trade</label> 
    <label class="s_radio"><input type="radio" name="r" id="r3" onchange="disableTxt()"/> Lets Talk</label><br /> 
    <input type="text" name="r" id="price" style="display:none;width:212px;" size="30" placeholder="Type your price"/> 
</div> 

, похоже, делает трюк, не так ли?

+0

Нет. Он отображает входной сигнал. Вход должен отображаться на новой строке хуже или обернут в свой собственный

422

+0

Я не уверен, что понимаю проблему: вы хотите, чтобы поле ввода появилось на новой строке? После последнего переключателя есть «
», который должен убедиться, что это происходит. Кроме того, вы можете установить для свойства 'display'' block' вместо 'inline' в определении' enableTxt() '. Если вам нужна метка в поле ввода, оберните ярлык и поле ввода в div и используйте этот идентификатор обертки вместо «цены» в вашем коде. –

+0

Пробовал это, но, возможно, это вопрос блока. Дает ему вихрь Julian – 422

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