Javascript-форум (https://javascript.ru/forum/)
-   Opera, Safari и др. (https://javascript.ru/forum/css-html-browser/)
-   -   Google Chrome: не выполняется JavaScript который нормально работает в IE8 (https://javascript.ru/forum/css-html-browser/22081-google-chrome-ne-vypolnyaetsya-javascript-kotoryjj-normalno-rabotaet-v-ie8.html)

JavaCommando 05.10.2011 16:13

Google Chrome: не выполняется JavaScript который нормально работает в IE8
 
Сабж.

Хочу добавить, что настройки безопасности в Chrome выставлены "allow all sites to run javascript".

<html>
<form id="myform" method=post action="" enctype="text/plain" style="background:'e0e0e0'"> 
Кому: 
<input name="email_to" type="text" value=""> 
<p> 
От кого: 
<input name="email_from" type="text" value=""> 
<p> 
Сообщение: <br> 
<textarea name="txtmessage" type="text" value=""></textarea> 
<p>
<input name="btnsend" type="submit" value="Отправить" > 
</form>
<script> 
function myform.onsubmit() { 
    var noemail = myform.email_to.value.indexOf('@') == -1  
    var notext = !myform.txtmessage.value 
    var xtext = "\nПисьмо не отправлено" 
    if (noemail || notext) { 
        event.returnValue = false 
        if (noemail) 
            alert("Неправильный адрес получателя" + xtext) 
        else 
            alert("Нет текста сообщения" + xtext) 
    } else 
        myform.action = "mailto:" + myform.email_to.value  
} 
</script>
</html>


Код примера взят из книги Вадима Дунаева Сайт Вадима Дунаева

Kolyaj 05.10.2011 16:19

Цитата:

Сообщение от JavaCommando
Код примера взят из книги Вадима Дунаева Сайт Вадима Дунаева

Выбросьте эту книгу, забудьте сайт.
http://javascript.ru/tutorial/dom/search#poisk-po-id

JavaCommando 05.10.2011 16:56

К сожалению, исправление кода не помогло:
<html>
<form id="myform" method=post action="" enctype="text/plain" style="background:'e0e0e0'"> 
Кому: 
<input name="email_to" id="email_to" type="text" value=""> 
<p> 
От кого: 
<input name="email_from" type="text" value=""> 
<p> 
Сообщение: <br> 
<textarea name="txtmessage" id="txtmessage" type="text" value=""></textarea> 
<p>
<input name="btnsend" type="submit" value="Отправить" > 
</form> 
<script> 
function myform.onsubmit() { 
    var email_to_value = document.getElementById('email_to').value
    var noemail = email_to_value.indexOf('@') == -1  
    var notext = !document.getElementById('txtmessage').value 
    var xtext = "\nПисьмо не отправлено" 
    if (noemail || notext) { 
        event.returnValue = false 
        if (noemail) 
            alert("Неправильный адрес получателя" + xtext) 
        else 
            alert("Нет текста сообщения" + xtext) 
    } else 
        myform.action = "mailto:" + email_to_value 
} 
</script>
</html>

Может быть тут какая-то другая фундаментальная особенность Chrome? Даже цвет фона не устанавливается. А в IE8 всё работает, как в первом так и во втором варианте.

zebra 05.10.2011 17:03

По быстрому накатал
document.getElementById('myform').onsubmit = function(event) {
    var email_to_value = document.getElementById('email_to').value
    var noemail = email_to_value.indexOf('@') == -1  
    var notext = !document.getElementById('txtmessage').value
    var xtext = "\nПисьмо не отправлено"
    if (noemail || notext) {
        event.returnValue = false
        if (noemail)
            alert("Неправильный адрес получателя" + xtext)
        else
            alert("Нет текста сообщения" + xtext)
        return false;
    } else
        myform.action = "mailto:" + email_to_value
}

Kolyaj 05.10.2011 17:10

Цитата:

Сообщение от JavaCommando
function myform.onsubmit()

Не может быть точки в имени функции.

JavaCommando 05.10.2011 17:51

В таком виде работает:
<html>
<form id="myform" method="post" action="" enctype="text/plain"> 
Кому: 
<input name="email_to" id="email_to" type="text" value=""> 
<p> 
От кого: 
<input name="email_from" type="text" value=""> 
<p> 
Сообщение: <br> 
<textarea name="txtmessage" id="txtmessage" type="text" value=""></textarea> 
<p>
<input name="btnsend" type="submit" value="Отправить" > 
</form> 
<script> 
document.getElementById('myform').onsubmit = function(event) { 
    var email_to_value = document.getElementById('email_to').value
    var noemail = email_to_value.indexOf('@') == -1  
    var notext = !document.getElementById('txtmessage').value 
    var xtext = "\nПисьмо не отправлено" 
    if (noemail || notext) { 
        event.returnValue = false 
        if (noemail) 
            alert("Неправильный адрес получателя" + xtext) 
        else 
            alert("Нет текста сообщения" + xtext) 
    } else 
        document.getElementById('myform').action = "mailto:" + email_to_value 
} 
</script>
</html>

Свойство style я всё-таки выкинул из myform потому, что не понял как заставить работать заливку фона в Chrome.

Большое всем спасибо! Тему можно считать закрытой.


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