Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужна помощь со скриптом
 
 автор: Sc   (09.08.2008 в 13:48)   письмо автору
 
 

<script language="javascript">
function __tfunc(value123)
{
    if (test.style.display == "none")
    {    
        test.style.display = "block";        
        testbutton.focus();        
    }
    else
    {
        test.style.display = "none";
    }    
    test.innerHTML = 'Вы заказали ' + value123 + ' метров данного материала. Сумма Вашего заказа = ' + 100*value123 + 
' руб. <form><input type="hidden" name="test" value="' + value123 + '"><input type="submit" value="Вас это устроит?"></form>';
}
function __clfunc()
{
    test.style.display = "none";
}
</script>
<input id="testinput" type="text">
<button id="testbutton" onclick="javacript: __tfunc(testinput.value);" onblur="javascript: __clfunc();">Подсчет</button><br>
<div id="test" style="display: none;"></div>

Проблема в том, что данный скрипт не работает в браузере Opera 9.5 (Работает в последних версиях InternetExplorer, FireFox и Safari, но работу в ранних не проверял, но этого и не требуется). Так же приходится создавать форму JavaScript'ом:
test.innerHTML = 'Вы заказали ' + value123 + ' метров данного материала. Сумма Вашего заказа = ' + 100*value123 + 
' руб. <form><input type="hidden" name="test" value="' + value123 + '"><input type="submit" value="Вас это устроит?"></form>';

Хотя на самом деле в форме будет еще больше полей, так вот хотелось бы, чтобы данный скрипт работал так чтобы форма окутывала <input id="testinput" type="text">, но при этом функционал остался такой же, просто хочется сократить число полей input и не делать лишние скрытые поля для отправки серверу для обработки. (При попытки обернуть формой функционал теряется, т.е. при нажатии на кнопку "Подсчет" <div id="test" style="display: none;"></div> появляется, а потом быстро исчезает, а должно быть так, чтобы данный div исчезал только тогда, когда пользователь либо повторно нажимает на кнопку "Подсчет", либо кнопка "Подсчет" теряет фокус.)

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

  Ответить  
 
 автор: PAT   (09.08.2008 в 14:21)   письмо автору
 
   для: Sc   (09.08.2008 в 13:48)
 

Вы попробовали бы почитать то, что пишется в "Консоли ошибок" (и в Opera, и в FireFox) - и ваш вопрос был бы снят.

Обращаться к объекту напрямую по его ID сильно не рекомендуется.
Необходимо использовать метод getElementById.
Добавьте этот метод - и всё будет работать:
function __tfunc(value123)
{
    if (document.getElementById ('test').style.display == "none")
    {    
        document.getElementById ('test').style.display = "block";        
        document.getElementById ('testbutton').focus();        
    }
    else
    {
        document.getElementById ('test').style.display = "none";
    }    
    document.getElementById ('test').innerHTML = 'Вы заказали ' + value123 + ' метров данного материала. Сумма Вашего заказа = ' + 100*value123 + 
' руб. <form><input type="hidden" name="test" value="' + value123 + '"><input type="submit" value="Вас это устроит?"></form>';
}
function __clfunc()
{
    document.getElementById ('test').style.display = "none";


...

<button id="testbutton" onclick="__tfunc (document.getElementById ('testinput').value);" onblur="__clfunc();">Подсчет</button><br>


И, во-вторых, совсем не стоит иметь на одной странице два разных элемента с одним ID|именем.
В чём сакральный смысл того, что внутри DIV'a с ID="test" создается INPUT с name="test"?

У вас, что, фантазии на какое-нить иное имя не хватает?
Я понимаю, что английский язык беден словами (не то, что великий русский), и понимаю, что ваши познания в английском совсем никакие... но добавить справа несколько цифр к какому-нить из двух test'ов могли бы и догадаться :-)

Ну и, наконец, протокол javascript: в событиях при тегах использовать не надо - я в примере удалил это глупейшее дело.

  Ответить  
 
 автор: Sc   (09.08.2008 в 15:33)   письмо автору
 
   для: PAT   (09.08.2008 в 14:21)
 

Конечно спасибо, но document.getElementById я уже вставил.

>Вы попробовали бы почитать то, что пишется в "Консоли ошибок" (и в Opera, и в FireFox) - и ваш вопрос был бы снят.

Я вообще-то создание сайтов давно бросил заниматься, по этому время от времени знакомым просто помогаю, так для смена рода деятельности и то я серверную часть всегда писал и буду писать:)

> И, во-вторых, совсем не стоит иметь на одной странице два разных элемента с одним ID|именем.

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

> В чём сакральный смысл того, что внутри DIV'a с ID="test" создается INPUT с name="test"?
> У вас, что, фантазии на какое-нить иное имя не хватает?
> Я понимаю, что английский язык беден словами (не то, что великий русский), и понимаю, что ваши познания в английском совсем никакие... но добавить справа несколько цифр к какому-нить из двух test'ов могли бы и догадаться :-)

Ну с кажем так, что у меня и фантазии и владение английским более ваших будут в сферу деятельности + английский язык не такой уж и бедный, если его нормально изучить;) Совет тебе на будущее, никогда в такой манере не выражайся, ибо тяжело будет карьеру делать;) Я же не говорю, что ты в моей деятельности ноль полный:) // Ничего личного, просто возмущает такая манера общения, сразу видно, что с людьми мало работаешь, а если и в должной мере, то качество общения очень страдает:)

> Ну и, наконец, протокол javascript: в событиях при тегах использовать не надо - я в примере удалил это глупейшее дело.

Ну какой исходник был, такой и предоставил.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования