Javascript oninput и браузеры

Insight707

Новичок
Здравствуйте снова :)

Вот вчера вечером начал изучать Javascript, и сразу возник вопрос:

PHP:
		echo "</select>
		<br /><font color=#FFA500 style=bold><br />На что меняем</font><br />
		<font size=2>Имя:<br />
		<input type=text name='firstname' id='firstname' oninput=\"drawresult();\" maxlength='10'> <text id='nameerror'></text> <br />
		Фамилия:<br />
		<input type=text name=lastname id='lastname' oninput=\"drawresult();\"  maxlength='10'> <text id='lastnameerror'></text><br />
		<br/><b>Результат:</b> <text id='result'>(начните вводить имя или фамилию)</text><br/>
		</font><br/>
		<input type=submit value='Сменить имя' style='width:150px; height:30px;'></form>";

<script type="text/javascript">
function confirmBuy() {
var errors = 0;

	if (document.forms['changenameform'].elements['firstname'].value == "" || document.forms['changenameform'].elements['lastname'].value == "") {
	
		alert ('Заполните все поля!');
		errors++;
	
	}
	
	if (document.forms['changenameform'].elements['firstname'].value.length < 3 || document.forms['changenameform'].elements['firstname'].value.length > 10) {
	
		document.getElementById('nameerror').innerHTML = "<font color='red'> < имя не может быть короче 3х и длиннее 10 символов </font>";
		errors++;
	
	}
	
	else {
	
		document.getElementById('nameerror').innerHTML = "";
	
	}
	
	if (document.forms['changenameform'].elements['lastname'].value.length < 4 || document.forms['changenameform'].elements['lastname'].value.length > 10) {
	
		document.getElementById('lastnameerror').innerHTML = "<font color='red'> < фамилия не может быть короче 4х или длиннее 10 символов! </font>";
		errors++;
	
	}
	
	else {
	
		document.getElementById('lastnameerror').innerHTML = "";
	
	}

	if (errors == 0) {
	
		
		if (confirm("Меняем имя c " + ourselect2.options[ourselect2.selectedIndex].text +  " на " + "" + ucfirst(document.getElementById('firstname').value) + "_" + ucfirst(document.getElementById('lastname').value) + "?")) {

			return true;

		} else {

			return false;

		}

	}

	return false;

}

function ucfirst(str) 
{
    var first = str.substr(0,1).toUpperCase();
    return first + str.substr(1);
}

function drawresult() {

	if (document.forms['changenameform'].elements['firstname'].value.length == 0 && document.forms['changenameform'].elements['lastname'].value.length == 0) {
	
		document.getElementById('result').innerHTML = ourselect2.options[ourselect2.selectedIndex].text + "<font color='red'> > </font>" + "(начните вводить имя или фамилию)";
		return false;
	
	}

	document.getElementById('result').innerHTML = ourselect2.options[ourselect2.selectedIndex].text + "<font color='red'> > </font>" + ucfirst(document.forms['changenameform'].elements['firstname'].value) + "_" + ucfirst(document.forms['changenameform'].elements['lastname'].value);

}

</script>
В Chrome и FireFox работает на отлично. IE, Opera - does not works.
Что я делаю не так?)
 

Духовность™

Продвинутый новичок
пренебрегаешь jQuery
плохой совет. jQuery использовать не зная основу основ - JavaScript - значит быть не достаточно квалифицированным

Что я делаю не так?)
в IE ошибки показываются, в Opere тоже вроде есть консоль для просмотра ошибок
и вообще тебе такое понятие как отладка программы знакомо? найди тот учаток кода, который не работает, протестируй, поищи в яндексе особенности доступа к элементам DOM из различных браузеров
научись сам находить ответы, они лежат на поверхности

ну и почитай http://www.phpinfo.su/articles/practice/shablony_v_php.html и не пиши больше html через echo
 

Redjik

Джедай-мастер
плохой совет. jQuery использовать не зная основу основ - JavaScript - значит быть не достаточно квалифицированным
абсолютно согласен, переиграем, изучить основы js на книжках и примерах, на production использовать jQuery, они (разработчики) все несовместимости браузеров побороли (ну или почти все)
 

Insight707

Новичок
поищи в яндексе
o
фу-фу-фу.

Спасибо всем. Почитал про разделение. В-принципе, полезная штука, но я как-то пока все один, без верстальщиков и.т.п. - этим не пользовался, а вообще, обязательно пригодится)

Да, насчет jQuery, думаю буду его потихоньку начинать использовать, попутно с Javascript.
 

fixxxer

К.О.
Партнер клуба
в query нет поддержки onInput, сответчики.

Да и событие новое, есть не во всех браузерах. (BTW, очень забавно наблюдать событие из html5 времен, записанное в стиле 96-го года, рядом с font color... ТС, верни книжку, по которой учишься, дедушке :))

В jQuery для браузеров, которые событие поддерживают, его можно добавить как-то так

$.fn.input = function(fn) {
var self = this;
return this.bind('input.input', function(event) {
self.unbind('keydown.input');
fn.call(this, event);
});
};

У меня, кстати, в Опере отлично работает. А для недобраузеров можно input событие гвоздями прибить к keyup. У меня оно в оформительских целях используется, потому я просто забил.
 

Insight707

Новичок
Да вообщем, ошибка была банальная - undefined variable 'ourselect2' :)

Исправил. Все работает. Еще раз благодарю.
 

fixxxer

К.О.
Партнер клуба
Insight707
Тебе вообще надо научиьтся писать html и css, как это делают в 2012 году. Поищи какие нибудь современные туториалы, чтоли.
Ну вот с этого начни http://softwaremaniacs.org/blog/category/primer/
Реально пугает видеть эти font color, вспоминается нетскейп навигатор 4 =)
 

Insight707

Новичок
Insight707
Тебе вообще надо научиьтся писать html и css, как это делают в 2012 году. Поищи какие нибудь современные туториалы, чтоли.
Ну вот с этого начни http://softwaremaniacs.org/blog/category/primer/
Реально пугает видеть эти font color, вспоминается нетскейп навигатор 4 =)
Да блин, просто у меня была задача по быстрому написать игровую панельку, так сказать для дохода. А PHP к тому времени, а тем более CSS я слабенько знал. Ну вот по старинке так, не заморачиваясь, напрограммировал себе (взял джумлу, установил на неё шаблон, саму CMS удалил, скопировал исходный код страницы и инклудом в этот исходный код (
PHP:
	if (!isset($_GET['show'])) {
		
		include 'ucpparse.php'; 
		
	}
	
	else {
	
		$get = $_GET['show'];
		$get=ereg_replace("\/","",$get);
		include "$get.php";
		
	}
) вставил "свою систему контента". Денежки капают, я продолжаю учиться шире. Советы хорошие даете, спасибо.
 

Insight707

Новичок
Кстати, не могу найти как получить:

PHP:
<option value=".$row['gameacc_id'].">".$row['gameacc_nick']."</option>
$row['gameacc_nick'] - вот это, яваскриптом.
document.getElementById('ourselect2').value забирает - $row['gameacc_id']
 

Redjik

Джедай-мастер
игровую панельку??? как теперь изящно банеры называют...
 
Сверху