Вопрос по регулярным выражениям

Старый mweb

Модератор: [mweb team]

Вопрос по регулярным выражениям

Сообщение Padonak Вс апр 29, 2007 13:05

вопрос такой.

есть короче текстовое поле. в него вносится текст состоящий из нескольких слов любого формата.
можно допустить что каждое слово из этого текста ну скажем не короче 2 символов. например
вот такой текст Sir John Regal Herring III. задача состоит в том чтобы при онблюре т.е.
когда текст внесли (ну или onchange - неважно) замениить этот текст на его первые 2 слова.
я ковыряю-ковыряю что-то никак не могу сделать. составил шаблон

var pattern = /[a-zA-Z]{2,} [a-zA-Z]{2,}/ig;

и потом пишу вот такую хрень:

var fields = document.forms["testform"].elements;

for(var i = 0; i < fields.length; i++){

fields[i].onblur = function(){
if(this.value != ""){
var temp = this.value;
var pattern = /[a-zA-Z]{2,} [a-zA-Z]{2,}/ig;
this.value = "";// это кажется лишнее но вреда не принесет
this.value = temp.replace(pattern,а вот что написать тут никак не соображу);
}
else{return;}
}

}

одна надежда на вас колдуны
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Сообщение Padonak Вс апр 29, 2007 18:49

Muerto ну хватит уже жрать коньяк -12- блин десять человек посмотрело уже и никто не ответил! чо - никто не знает?! не пугайте меня. или никто не в курсе?
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Сообщение Muerto Пн апр 30, 2007 10:40

Извини, я в запое. Тебе надо первое найденное по паттерну туда подставить. Я сейчас не в состоянии пока написать, но чтото типа this.value = temp.replace(pattern,'$1'); - поищи сам или дождись моего выхода из запоя.
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Сообщение Padonak Пн апр 30, 2007 14:01

2Muerto: я так писал хрен сработало. я тут уже кэт допросил всю голову ей проклепал -02- короче я сделал все гораздо проще. как ни странно топорный метод может быть намного быстрее. вот если интересно посмотрите о чем я говорил. там комменты на английском потому что делал я для какого-то буржуя но думаю разберетесь. не стал я пользоваться ни рег выражениями ни создавать объектов а просто наштамповал скрытых полей и этого оказалось вполне достаточно:

Код: Выделить всё
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
      "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Truncated input onblur</title>
<style type="text/css">
<!--
body{
font-family:Verdana, Helvetica;
font-size:12px;
color:#000;
background-color:#f8f8ff;
padding-left:5%;
padding-right:5%;
}
a:link,a:active,a:visited{
text-decoration:none;
color:#000;
background-color:transparent;
font-size:13px;
font-weight:bold;
}
a:hover{
text-decoration:none;
color:Red;
background-color:transparent;
font-size:13px;
font-weight:bold;
}
h2{
position:absolute;
top:20px;
right:50px;
padding-right:50px;
font-size:18px;
}
input{
text-align:center;
font-weight:bold;
margin-top:5px;
}
#main{
width:100%;
text-align:center;
padding-top:150px;
}
.btn{
width:150px;
padding:2px 2px 2px 2px;
font-weight:bold;
cursor:pointer;
}
-->
</style>
</head>
<body>
<h2>Truncated input onBlur, display all onFocus</h2>
<div id="main">
<form name="testform" id="testform" action="">
<input type="text" size="30" name="inp_1" id="inp_1"><br>
<input type="text" size="30" name="inp_2" id="inp_2"><br>
<input type="text" size="30" name="inp_3" id="inp_3"><br>
<input type="text" size="30" name="inp_4" id="inp_4"><br>
<input type="text" size="30" name="inp_5" id="inp_5"><br>
<input type="text" size="30" name="inp_6" id="inp_6"><br>
<input type="text" size="30" name="inp_7" id="inp_7"><br>
<br><br><br>
<input class="btn" type="reset"name="rez" id="rez" value="reset" onfocus="this.blur()">
</form>
</div>
<script language="javascript" type="text/javascript">
<!--
// ex. Sir John Regal Herring III

var fields = document.forms["testform"].elements;
// here we generate hidden inputs as many as we have visible ones
// NOTE: when you submit the form you must submit values of these HIDDEN inputs
// because the full data for every visible input is stored in the hidden one
// which name is equal to the visible with suffix "hid_"
// for example, if your visible input's name is "inp_1"
// its full data will be stored in the hidden input which name is "hid_inp_1"
var k = 1;
while(document.getElementById("inp_" + k)){
var new_hidden_field = document.createElement("input");
new_hidden_field.setAttribute("name","hid_inp_" + k);
new_hidden_field.setAttribute("id","hid_inp_" + k);
new_hidden_field.setAttribute("type","hidden");
new_hidden_field.value = "";
document.forms["testform"].appendChild(new_hidden_field);
k++;
}

for(var i = 0; i < fields.length; i++){
// here we define only inputs which is mentioned to be collapsed and then expanded
if(fields[i].tagName == "INPUT" && fields[i].type == "text" && fields[i].name && fields[i].id){
// here is what happens when each input gets focus - BEGIN
fields[i].onfocus = function(){
if(this.size != "30"){
var hidname = "hid_" + this.name;
expand(this.id,this.size);
this.value = fields[hidname].value;
fields[hidname].value = "";
}
else{return;}
}
// here is what happens when each input gets focus - END
// here is what happens when each input looses focus - BEGIN
fields[i].onblur = function(){
if(this.value != ""){
var temp = this.value.split(" ");
var hidname = "hid_" + this.name;
fields[hidname].value = this.value;
this.value = temp[0] + " " + temp[1];
if(this.size == "30"){colaps(this.id,this.size,this.value.length);}
}
else{if(this.size == "30" && this.value != ""){colaps(this.id,this.size,this.value.length);}return;}
}
// here is what happens when each input looses focus - END
}
// here we let the loop not pay attention on the other form elements
else{continue;}
}

function colaps(objID,objSize,vallength){
fields["rez"].disabled = "disabled";
var what = document.getElementById(objID);
if(objSize > vallength){what.size = objSize;objSize-=2;}
else{fields["rez"].disabled = "";return;}
setTimeout("colaps('" + objID + "'," + objSize + "," + vallength + ")",1);
}

function expand(objID,objSize){
fields["rez"].disabled = "disabled";
var what = document.getElementById(objID);
if(objSize < 30){what.size = objSize;objSize+=2;}
else{what.size = "30"; fields["rez"].disabled = ""; return;}
setTimeout("expand('" + objID + "'," + objSize + ")",1);
}

function resetAll(){
for(var i = 0; i < fields.length; i++){
if(fields[i].tagName == "INPUT" && fields[i].type != "reset" && fields[i].name && fields[i].id){
fields[i].value = "";
if(fields[i].type != "hidden" && fields[i].type != "reset"){fields[i].size = "30";}
}
else{continue;}
}
}

document.forms["testform"].onreset = function(){setTimeout("resetAll()",250);}
// this resets the form if the page has been reloaded for some reason
// to prevent having old data
setTimeout('document.forms["testform"].reset()',250);
//-->
</script>
</body>
</html>


вводите в поле что-то из нескольких слов тогда будет видно что происходит (можно брать пример который сам чувак этот просил - Sir John Regal Herring III)
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону

Сообщение Muerto Пн апр 30, 2007 19:57

В данныймомент я в не состоянии просмотреть такое кол-вл кода. Дык обясни - в чем там была загвоздка?
Nadie hablara de nosotras cuando hayamos muerto.
www.muerto.ru
Аватара пользователя
Muerto
Растаман
 
Сообщения: 3597
Зарегистрирован: Пн окт 11, 2004 19:09
Откуда: Москва

Сообщение Padonak Пн апр 30, 2007 20:04

2Muerto: бухай спокойно все решилось :-) peace braza -29-
Uncaught TypeError: Изображение

Изображение
Аватара пользователя
Padonak
Философ-разговорник
 
Сообщения: 3872
Зарегистрирован: Вт дек 13, 2005 3:23
Откуда: Ростов-на-Дону


Вернуться в Архив

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron