0

ユーザーがTXをドロップダウンから選択した場合、テキストボックスは10文字までの数字のみを受け入れる必要があります。そうでなければユーザーがNYを選択した場合、ユーザーは15文字まで英数字を入力できます。はじめて初めてうまく働いています。次に、任意の選択に対して、テキストボックスは(選択に関係なく)数字のみを受け入れます。 JSfiddleリンクは以下の通りです:Jquery keypress関数が正しく機能しない

https://jsfiddle.net/narendrak/t9n9hbgc/1/

コードスニペットは以下の通りです:

<input type="text" tabindex="7" maxlength="10" size="18" name="stateinfo"  id="stateinfo" style="text-transform: uppercase;" value="" disabled /> 
    <select name="states" id="states" value="State"> 
    <option value="State">State</option> 
    <option value="NY">NY</option> 
    <option value="TX">TX</option> 
    </select> 

JSコード:

$(document).ready(function() { 
    $('#states').change(function() { 
    var dropdown = $("#states").val(); 
    if (dropdown == "State") { 
     $("#stateinfo").val(""); 
     $("#stateinfo").attr('disabled', 'disabled'); 
    } else if (dropdown == "TX") { 
     $('#stateinfo').keypress(function(e) { 
     var regex = new RegExp("^[0-9]+$"); 
     var num = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
     if (regex.test(num)) { 
      return true; 
     } 
     e.preventDefault(); 
     return false; 
     }); 
     $("#stateinfo").removeAttr('disabled'); 
     $("#stateinfo").val(""); 
     $("#stateinfo").attr("maxlength", "10"); 
    } else { 
     $('#stateinfo').keypress(function(e) { 
     var regex = new RegExp("^[a-zA-Z0-9]+$"); 
     var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
     if (regex.test(str)) { 
      return true; 
     } 
     e.preventDefault(); 
     return false; 
     }); 
     $("#stateinfo").removeAttr('disabled'); 
     $("#stateinfo").val(""); 
     $("#stateinfo").attr("maxlength", "15"); 
    } 
    }); 
}); 

すべてのヘルプは高く評価されます。

ありがとうございました。

答えて

0

あなただけ

$(document).ready(function() { 
    $('#states').change(function() { 

    $("#stateinfo").unbind("keypress"); 

    var dropdown = $("#states").val(); 
    if (dropdown == "State") { 
     $("#stateinfo").val(""); 
     $("#stateinfo").attr('disabled', 'disabled'); 
    } else if (dropdown == "TX") { 
     $('#stateinfo').keypress(function(e) { 
     var regex = new RegExp("^[0-9]+$"); 
     var num = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
     if (regex.test(num)) { 
      return true; 
     } 
     e.preventDefault(); 
     return false; 
     }); 
     $("#stateinfo").removeAttr('disabled'); 
     $("#stateinfo").val(""); 
     $("#stateinfo").attr("maxlength", "10"); 
    } else { 
     $('#stateinfo').keypress(function(e) { 
     var regex = new RegExp("^[a-zA-Z0-9]+$"); 
     var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
     if (regex.test(str)) { 
      return true; 
     } 
     e.preventDefault(); 
     return false; 
     }); 
     $("#stateinfo").removeAttr('disabled'); 
     $("#stateinfo").val(""); 
     $("#stateinfo").attr("maxlength", "15"); 
    } 
    }); 
}); 
+0

おかげでたくさん、あなたが私の一日保存したハンドラのバインドを解除する必要があります。 –

関連する問題