2016-11-22 1 views
0
.

. Проблема, с которой я сейчас сталкиваюсь, - это событие нажатия кнопки автоматически запускается, когда клавиша ввода нажата в Html.TextBoxFor(). У меня главный вид. В этом представлении есть 3 кнопки. На каждой из двух кнопок открывается частичный вид, и при нажатии третьей кнопки открывается новое представление. Пожалуйста, смотрите код ниже:Событие с нажатием кнопки автоматически запускается во время TextBoxFor. Нажмите клавишу ввода

<script> 
    $(document).ready(function() { 
     SetUpDatePickers(); 
    }); 

    $('#button1').click(function (event) { 
     $('#divdefinetraj').toggle(); 
     $('#button1').hide(); 
     $('#button2').hide(); 
     $('#button3').hide(); 
     event.preventDefault(); 
     GetTrajectories(); 
    }); 

    $('#button2').click(function (event) { 
     $('#divRequestTT').toggle(); 
     $('#button1').hide(); 
     $('#button2').hide(); 
     $('#button3').hide(); 
     event.preventDefault(); 
    }); 

    $('#button3').click(function (event) { 
     window.location.href = '/UserManagement/UsersList/'; 
     event.preventDefault(); 
    });  
</script> 

Я нажал кнопку Button1 и открыт первый частичный вид:

Частичный вид имеет код ниже:

@Html.TextBoxFor(u => u.TrajName, new { @class = "txtboxclass", @id = "TrajName" }) 

Мой вопрос, когда я нажимаю «Enter "в этом текстовом поле, код для кнопки1 на главном экране выполняется:

$('#button1').click(function (event) { 
    $('#divdefinetraj').toggle(); 
    $('#button1').hide(); 
    $('#button2').hide(); 
    $('#button3').hide(); 
    event.preventDefault(); 
    GetTrajectories(); 
}); 

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

Я попытался обработать событие textboxfor onchange() и перейти к функции ниже, но он не обрабатывается.

function EnterKeyFilter() { 
    if (window.event.keyCode == 13) { 
     event.returnValue = false; 
     event.cancel = true; 
    } 
} 

Даже я пробовал ту же функцию для div-click() .. Это не сработает. Когда я нажимаю клавишу ввода, с этой информацией обрабатывается точная кнопка1 с этой информацией event = j…y.Event {originalEvent: MouseEvent, type: "click", timeStamp: 7055.025000000001, jQuery110208686809991100928: true, toElement: button#button1.

Но я не нажимаю на него. Частичное представление также не является частью формы, и представление формы не является проблемой. Я новичок в ASP.NET MVC и смущен этим странным поведением. Пожалуйста помоги. Заранее спасибо.

+0

Вы могли бы попытаться установить фокус на некоторые скрытый контроль, который ничего не делает. – Tatranskymedved

+0

Вы хотите, чтобы, когда кто-то нажал кнопку ввода на клавиатуре, ничего не случилось, правда? –

+0

@WillyDavidJr: Да. В точку. – ViVi

ответ

0

Если вы хотите отключить ваш пресс ввести в клавиатуре, попробуйте следующее:

$(function() { 

//On your document ready function, add this: 
     $('html').bind('keypress', function (e) { 
      if (e.keyCode == 13) { 
       return false; 
      } 
     }); 
} 
+0

Спасибо. Это сделал трюк. – ViVi

0

Попробуйте сохранить все три кнопки в разных тегах формы и заставил их отправить кнопку. Итак, в этом случае всякий раз, когда вы нажимаете ввод в форме ввода, будет нажата соответствующая кнопка. Чтобы предотвратить полную обратную передачу страницы, используйте e.preventDefault() в событии нажатия кнопки.

HTML:

<form id="frm1"> 
    ------------- 
    ------------- 
<input id="btnSubmit" type="submit" value="submit" /> 
</form> 

JQuery

$("#btnSubmit").click(function(e){ 
    e.preventDefault(); 
    -- rest of code 
}); 
+0

Как уже упоминалось в моем вопросе, здесь нет формы представления. – ViVi

+0

Я знаю, но чтобы получить поведение по умолчанию, например, ввод текстового поля, нажмите соответствующую кнопку, вы должны сделать формы. Однако их не нужно подавать, вы запрещаете их отправку при нажатии кнопки. –

Смежные вопросы