Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Проблема с if...else (https://javascript.ru/forum/dom-window/6248-problema-s-if-else.html)

parzh-junior 20.11.2009 00:29

Проблема с if...else
 
Чё за непонятности?
Есть input type="textbox" (id="futmestext") и input type="button". К button прикреплён скрипт:
function mesadd(){
if(document.getElementById('futmestext').value = ""){alert("Текст сообщения пуст.")} else {alert("Текст принят!")}
}

Ожидается, что скрипт будет проверять значение textbox и, если оно пустое, выводить alert, а он сначала делает это значение пустым, а потом проверяет! Как так????:help:

parzh-junior 20.11.2009 01:28

Спасибо за помощь.

Gozar 20.11.2009 09:59

Не понял, Вы сами нашли?
document.getElementById('futmestext').value = ""
document.getElementById('futmestext').value == ""

parzh-junior 22.11.2009 15:46

Нет, не нашёл. Целый час прождал...
Спасибо за помощь.

B~Vladi 23.11.2009 13:19

Цитата:

Сообщение от parzh-junior
Целый час прождал...

Вай как много...

nemo 23.11.2009 13:51

Цитата:

Целый час прождал...
ве влади по два года пишет сайты а вы.. тьфу!:-/

B~Vladi 23.11.2009 18:00

nemo, раздражать начинаешь уже:-E

sailor1 25.11.2009 03:10

ну что же, про переменные, так про переменные.

Только не бейте ногами, потому как мой первый пост и если я его засунул не туда - прошу простить.

Итак.
Есть код (моя жалкая попытка собрать из обрывков в и-нете выложенных примеров собрать что-то рабочее) формы отправки сообщений:

function isValidName ( str ) { 
if (str == "") { 
alert ("Введите имя"); 
return false; 
} 
return true; 
} 
function isValidEmailAddress ( str ) { 
if (str == "") { 
alert ("Введите электронный адрес"); 
return false; 
} 
else if ( str.indexOf ( " " , 0) != -1 || str. indexOf ( "@" ,3 ) == -1 || str. indexOf ( "." , 6) == -1 ) { 
alert("Ошибка: " + str + ". Вы уверены, что это электронный адрес?" ); 
return false; 
} 
return true; 
} 
function isValidURL ( str ) { 
if (str == "") { 
alert ("Введите адрес сайта"); 
return false; 
} 
else if ( str.indexOf ( " " , 0) != -1 || str.indexOf ( "http://" , 0) == -1 || str.indexOf ( "." , 8) == -1 ) { 
alert("Ошибка: " + str + ". Вы уверены, что это адрес сайта?" ); 
return false; 
} 
return true; 
} 
function isValidTema ( str ) { 
if (str == "") { 
alert ("Введите тему сообщения"); 
return false; 
} 
return true; 
} 
function isValidNotes ( str ) { 
if (str == "") { 
alert ("Введите текст сообщения"); 
return false; 
} 
return true; 
} 
/*begin!*/
function isValidCode ( str ) { 
if (str == "") { 
alert ("Введите код на картинке"); 
return false; 
} 
else if ( str. indexOf ( "1", "2", "7", 6) == -1 ) { 
alert("Введите, пожалуйста, корректный код" ) ; 
return false 
}
return true 
}
/*end!*/
function checkAll () { 
form = document.forms[0]; 
if (!isValidName(form.elements[0].value)) {form.elements[0].focus(); return false;} 
if (!isValidEmailAddress(form.elements[1].value)) {form.elements[1].focus(); return false;} 
if (!isValidURL(form.elements[2].value)) {form.elements[2].focus(); return false;} 
if (!isValidTema(form.elements[3].value)) {form.elements[3].focus(); return false;} 
if (!isValidNotes(form.elements[4].value)) {form.elements[4].focus(); return false;} 
if (!isValidCode(form.elements[6].value)) {form.elements[6].focus(); return false;}
return true; 
}


Так вот, всё в нём мне нравится, не работает (дописано мною) только окончание - та часть, которая отвечает за проверку введённого кода (выделена красным)...
То есть работает, но как заставить код принимать только вариации картинок с цифрами "1", "2", "7", состоящими из шести цифр?... :(
Может что кто скажет веское?
Заранее благодарен.

Riim 25.11.2009 03:50

http://www.pcre.ru/

sailor1 25.11.2009 03:52

Riim,
Спасибо, но это я уже читал, и не только это...
не помогает.

Забыл сказать, сайт на народе.ру, там не проходит PHP...

Понимаю что задница, а вот где она начинается и заканчивается в коде - не могу понять... :(

Riim 25.11.2009 04:53

Причем здесь PHP?

alert(/[127]{6}/.test('1234'));

Gozar 25.11.2009 10:07

Цитата:

Сообщение от sailor1 (Сообщение 36235)
Так вот, всё в нём мне нравится,

Это плохо, т.к. у Вас 7 функций делают то что должна делать одна.
Затем,
else if
можно смело заменить на
if
У Вас все эти isValid одинаковые по сути, так объедините их в одну ф-ю. А то можно подумать что в интернете ничего нормального найти нельзя.

Riim 25.11.2009 10:57

Цитата:

Сообщение от Gozar
Это плохо, т.к. у Вас 7 функций делают то что должна делать одна

валидация почти всегда так делается и на это есть причины.

sailor1 25.11.2009 12:09

Спасибо, но нельзя ли поподробнее?
Код коллеги Riim приму к сведению.

Пытался им модифицировать своё творение - как - то плохо получается...
Наверное не туда его втыкаю...

Если можно - не могли бы Вы представить свои соображения в виде целого рабочего блока вида:

function
//код...
return false; 
} 
return true; 
}


При замене
else if
на
if
коробочка ломается, сайт не грузится, интернет не запускаиццо... :)

Почему-то у меня в голове бытует мнение, что те скрипты, которые используются в PHP не будут (или не будут корректно) работать на сайтах без поддержки самого PHP... Хотя в кодах я различий не нашёл...

Заранее благодарен и прошу прощения за непонятливость.
С Уважением.

Riim 25.11.2009 22:10

Так причем здесь PHP? Я привел код на javascript-е. Рабочий код. Я не понимаю что еще нужно.

sailor1 25.11.2009 23:16

Прошу прощения за назойливость, но хотелось бы (как я уже озвучивал выше) иметь пример целого рабочего блока от корки до корки.
Я понимаю, что проще всего в моей ситуации ответить "RTFM" и не париться, но прошу всё-таки пояснить...

Заранее благодарен.

С Уважением.

Riim 26.11.2009 00:18

var isValidCode = function(value) {
return /[127]{6}/.test(value);
}

sailor1 26.11.2009 00:33

СПАСИБО!!!
УРРРА!!!
Заработало!!!
Осталось только "alert" туда дописать, ибо как условие выполняется, но код при этом предательски молчит...

sailor1 04.12.2009 17:17

Блин, Господа, помогите чайнику прикрутить к этой функции alert
:help:

Несколько дней убил на поиски, перековырял массу учебников, пытался и так, и сяк - но то ли не прокатывает выражение функции через var (надо реализовывать через function), то ли у меня моск сломан...

Всё чего достиг - или тот же результат (без alert) или полная неработоспособность скрипта в целом...

Как бы всё зашибись, поставил и работает, но чуствую себя каким-то неполноценным...
Заранее благодарен!


Часовой пояс GMT +3, время: 04:37.