【问题标题】: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>

      【讨论】: