【问题标题】:Validating textbox on copy paste in mvc在mvc中验证复制粘贴的文本框
【发布时间】:2014-10-06 08:38:22
【问题描述】:
我有一个文本框,它根据某些条件具有可变的 maxlenght。有与文本框相关的 keyup 和 keydown 事件。粘贴时我的最大长度验证失败。如果选择“位置”,则文本框的类型是最大长度为 6 的数字,其他类型是最大长度分别为 11 和 15 的文本“
$(document).on("pageinit", function (event) {
$('input[type="text"]').on('keyup keydown', function (event) { /*Some validation*/} });
$('input[type="number"]').on('keyup keydown', function (event) { /*Some validation*/} });
【问题讨论】:
标签:
javascript
jquery
asp.net-mvc
jquery-mobile
【解决方案1】:
jQuery
$(document).ready(function() {
var characters ;
$("#text").keyup(function(){
if($('#vehicle').prop('checked')){
characters=5;
}
else{
characters=10;
}
if($(this).val().length > characters){
$(this).val($(this).val().substr(0, characters));
}
});
});
HTML
<input type="checkbox" id="vehicle" value="Bike">I have a bike<br>
<input type="text" id="text"/>
SEE DEMO HERE
【解决方案2】:
我使用 paste 事件来触发 keyup 事件,因为只有使用 paste 事件我才能以某种方式获取输入,但我无法操纵给定的输入。这是我找到方法的方法-
$(".AlphaValidateOnPaste").on('paste', function(e) {
$(e.target).keyup();
});
$('.AlphaValidateOnPaste').on('keyup',function(e){
var value = $(this).val();
var i = value.length;
while (i--) {
var result = value.charAt(i).match(/^[a-zA-Z ]*$/);
if(result == null){
$(this).val('');
alert('Only Alphabates and Spaces');
break;
}
}
});
<label for="name">Name <span class="required">*</span></label>
<input type="text" name="employee_name" class="form-control AlphaValidateOnPaste" id="employee_name" required>
<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>