За последние 24 часа нас посетили 17792 программиста и 1628 роботов. Сейчас ищут 986 программистов ...

submit долбаной оперы.

Тема в разделе "JavaScript и AJAX", создана пользователем Danilevsky, 17 июн 2008.

  1. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    сабмичу форму не обычной кнопкой submit, а соытием javascript onclick
    опера сабмитит форму при нажатии ентера если фокус находится на елементе input type="text"
    даже если кнопку сабмита убрать, все равно сабмитит :)

    эта заботливось разработчиков вкрай задрала. делаю автодополнение. по ентеру у меня должен происходить выбор елемента, а не сабмит.
    подскажите пожалуйста, как победить оперу?
     
  2. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Я сделал приблизительно так:
    [js]function check_key (me,next) {
    if(window.event) // IE
    {
    keynum = me.keyCode;
    }
    else if(me.which) // Netscape/Firefox/Opera
    {
    keynum = me.which;
    }
    if (keynum == 13) {
    document.getElementById(next).focus();
    return false;
    }
    }[/js]

    HTML:
    1. <input type="text" onKeyPress="return check_key(event,'new_pack_weight')" name="new_pack_code" id="new_pack_code" />
    Может не совсем аккуратно, но я делал на скорую руку. Можешь попробовать сделать через tabIndex.
     
  3. Danilevsky

    Danilevsky Активный пользователь

    С нами с:
    12 фев 2006
    Сообщения:
    286
    Симпатии:
    0
    Адрес:
    Киев
    Johnatan, спасибо. натолкнул на верную тропу.
    сделал так, вроде работает.

    [js]$(document).ready(function() {

    // запрещаяем долбанной опере сабмитить форму
    $("input").keypress(function(event) {
    if(event.keyCode == 13) {
    $("#form").submit(function() {
    return false;
    });
    }
    });
    });[/js]
     
  4. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Опера разве уже откликается на keyCode? Я думал только на which.
     
  5. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Это jQuery. Он сам разруливает. У кого keyCode, а у кого which.
     
  6. oldcoder

    oldcoder Активный пользователь

    С нами с:
    24 мар 2008
    Сообщения:
    28
    Симпатии:
    0
    Все гораздо проще:

    <form onSubmit='<функция>'>

    функцию вешаешь ту же что и на onclick
     
  7. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Дабы не создавать тему...
    Как сделать, что бы в форму вводились только заглавные или только строчные буквы?
     
  8. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Ну, для этого нужно пользователю написать "Вводить ТОЛЬКО заглавные или ТОЛЬКО строчные буквы!". :)

    А вот как проверить, это уже другой вопрос.

    [js]<script type='text/javascript'>
    function doSubmit(obj) {
    var check = document.getElementById('r1');
    if ((check.value != check.value.toLowerCase()) && (check.value != check.value.toUpperCase())) {
    alert ('False');
    return false;
    } else {
    alert ('True');
    return true;
    }
    }
    </script>
    [/js]
    HTML:
    1.  
    2. <form id="form1" action="#" method=POST  onSubmit='return doSubmit(this)'>
    3. <input type=text id="r1" />
    4. <input type=submit value="Сформировать отчёт" />
    5. </form>
    Таким же образом можно реализовать "реалтаймовую" проверку.
     
  9. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    не... я видел где-то форму... туда сразу вводились ТОЛЬКО заглавные буквы...
     
  10. Ивашка

    Ивашка Активный пользователь

    С нами с:
    29 авг 2007
    Сообщения:
    96
    Симпатии:
    0
    Адрес:
    Щёкино/Тула
    Это будет спец-форма для блондинко? :)
    HTML:
    1. <input type="text" onkeyup="this.value=this.value.toUpperCase()">
     
  11. Johnatan

    Johnatan Активный пользователь

    С нами с:
    6 мар 2008
    Сообщения:
    508
    Симпатии:
    0
    Адрес:
    Испания
    Nemo
    Может быть я что-то не так написал, или ты хочешь чтобы за тебя подумали, поискали, написали, решили и ещё может денег заплатили?
     
  12. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Вот это прикольно :))) Спасибо! )