Заполнение формы нажатием клавиши ENTER и предотвращение отправки формы

JS

$('.add_to_list').live('keydown',function (e){
    if(e.keyCode == '13'){
        var holder=$(this).attr('hold'),
            val=$(this).val();
            if(holder == 'mf' ||holder == 'mp'){
                    var v='#'+holder;   
                    h='<li class="entery deletable"><input type="hidden" name="'+holder+'[]" value="'+val+'">'+val+'</li>';
                    $(v).append(h);
                    $(this).val('');
            }
        e.prevent_default();    
        return false;
    }
    $('#save_clinic').submit(function(){return false;});
    });

HTML

<form accept-charset="utf-8" method="post" id="save_clinic" action="#">
<p>
<b>Findings</b>
<ol id='mf'></ol>
<input type="text" hold="mf" class="add_to_list" value="" name="">
<!--the input hv no name cause i dont want it to be submitted, this is for adding only-->
</p>
<p>
<b>Medical Procedures:</b>
<ol id=mp></ol>
<input type="text" hold="mp" class="add_to_list" value="" name="">
<!--the input hv no name cause i dont want it to be submitted, this is for adding only-->
</p>
<input type=submit>
</form>

Проблема:
Я хочу запретить отправку при нажатии клавиши ENTER и разрешить отправку только при нажатии кнопки отправки, но мой текущий js предотвращает отправку для обоих, и если я удалю

$('#save_clinic').submit(function(){return false;});

из js, то форма автоматически отправляется, когда пользователь пытается заполнить форму.

Может кто-нибудь, пожалуйста, скажите мне, в чем здесь проблема? пример


person Zalaboza    schedule 27.12.2012    source источник


Ответы (3)


Функция называется preventDefault (без подчеркивания, заглавная буква "D"). не prevent_default. Попробуйте и удалите эту строку:

$('#save_clinic').submit(function(){return false;});
person Paul    schedule 27.12.2012

Я думаю, что это должно быть снаружи:

$('.add_to_list').live('keydown',function (e){
   if(e.keyCode == '13'){
    var holder=$(this).attr('hold'),
        val=$(this).val();
        if(holder == 'mf' ||holder == 'mp'){
                var v='#'+holder;   
                h='<li class="entery deletable"><input type="hidden" name="'+holder+'[]" value="'+val+'">'+val+'</li>';
                $(v).append(h);
                $(this).val('');
        }
   }
   e.prevent_default(); // take this out from the if   
   $('#save_clinic').submit(function(){return false;});
});
person Jai    schedule 27.12.2012
comment
где форма в этой скрипке? - person Jai; 27.12.2012

$('.add_to_list').live('keydown',function (e){
        if(e.keyCode == '13'){
            var holder=$(this).attr('hold'),
                val=$(this).val();
                if(holder == 'mf' ||holder == 'mp' ||holder == 'orders'){
                        var v='#'+holder;   
                        h='<li class="entery deletable"><input type="hidden" name="'+holder+'[]" value="'+val+'">'+val+'</li>';
                        $(v).append(h);
                        $(this).val('');
                }
            //return false;
            e.preventDefault(); 

И http://www.bloggingdeveloper.com/post/Disable-Form-Submit-on-Enter-Key-Press.aspx

оба работают нормально сейчас .. спасибо всем

person Zalaboza    schedule 27.12.2012