0

Ich mache einige Änderungen in der Benutzeroberfläche, wenn ein Benutzer wählen TX aus Drop-Down dann ein Textfeld sollte akzeptieren nur Zahlen bis 10 Char sonst wenn Benutzer wählen NY dann Benutzer kann alphanumerische bis zu 15 Zeichen eingeben, den Code funktioniert nur zum ersten Mal. Bei jeder Auswahl akzeptiert das Textfeld nur Zahlen (unabhängig von der Auswahl). Der JSfiddle Link ist unten:Jquery Tastendruck funktioniert nicht richtig

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

Code-Schnipsel ist unten:

<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-Code:

$(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"); 
    } 
    }); 
}); 

Jede Hilfe sehr geschätzt wird.

Danke.

Antwort

0

Sie müssen nur UNBIND einen Handler

$(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

Vielen Dank, du bist mein Tag gerettet. –

Verwandte Themen