Как вы можете видеть на следующем рисунке, у меня есть простая форма, которая проверяет поля в режиме реального времени и генерирует span
, который говорит, является ли это поле действительным или нет. проблема в том, что по какой-то причине span не будет выходить за пределы содержащего div, даже если в его правиле css есть position:absolute
. Кстати, диапазон получает свою позицию right
, используя javascript, который вычисляет ширину этого поля (поскольку каждое поле отличается по ширине). какие-либо предложения?
вот код css:
div.row {
background:url('/img/formBackground.gif') repeat;
margin:0 2px 2px 2px;border-radius:10px 0 10px 0;
position:relative
}
.row span.valid,
.row span.invalid {
line-height:18px;
height:20px;padding:0 22px 0 5px;
display:block;font-size:13px;
border-radius:3px;position:absolute;
z-index:100;top:4px;right:160px
}
вот HTML-код:
<div class="row">
<label for="email">דואר אלקטרוני: <span class="required">*</span></label>
<div class="divider"></div>
<input type="text" name="email" id="email" style="width:250px" dir="ltr"/>
</div>
вот код JavaScript:
email.onchange = function validateEmail() {
span = document.getElementById('span4');
span.style.right = calcDistance(email);
var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
el = email.value;
if(el == null || el == '') {span.setAttribute('class','invalid');span.innerHTML = "<span></span>עליך להזין דוא\"ל";return false;}
if(reg.test(el) == false) {span.setAttribute('class','invalid');span.innerHTML = "<span></span>כתובת הדוא\"ל אינה תקינה";return false;}
else {span.setAttribute('class','valid');span.innerHTML = "<span></span>תקין";return true;}
}
function calcDistance(el) {
var spanDistance = 160 + 20;
var targetWidth = el.offsetWidth;
return targetWidth + spanDistance + 'px';
}
Вот как я хочу, чтобы это выглядело (span
выходит за пределы содержащего div
). Я смог получить этот результат, только дав span
определенное значение *1021*, что не является хорошим решением, поскольку каждое сообщение отличается по ширине: