Dies ist tatsächlich Teil 2 einer Frage, die ich zuvor gestellt habe. Ich benutze *, um SSN zu verbergen, wenn der Benutzer einige Ziffern eingibt. Mein Problem ist, dass das Feld als * - - **** zurückkommt, wenn ich das Formular absende. Also dachte ich darüber nach, ein Attribut namens fillSSN zu erstellen, um zu verfolgen, was eingegeben wurde. Meine Herausforderung besteht darin, bestimmte Schlüsselereignisse wie Rückschritt zu verfolgen, das gesamte Feld zu löschen oder zu löschen. Wenn diese Ereignisse eintreten, muss das gefüllteSSN ebenfalls neu erstellt werden. HierEin Feld mit Sternchen verstecken und ein Eingabeattribut mit dem ursprünglichen Wert setzen
ist ein jsfiddle Link: jsfiddle link
<script type="text/javascript">
$(document).ready(function(){
$('#ssn').keyup(function(e) {
var self = $(this);
var val = self.val().replace(/[^\d\*]/g, '').replace(/\d/g,'*');
var newVal = '';
var tmpVal = '';
var ssnParts = [3, 2, 4];
var maxSize = 10;
for (var i in ssnParts) {
if (val.length > ssnParts[i]) {
newVal += val.substr(0, ssnParts[i]) + '-';
val = val.substr(ssnParts[i]);
} else {
break;
}
}
newVal += val;
self.val(newVal);
console.log("newVal = " + newVal);
console.log("whichy which ? " + e.which);
if (self.attr("filledSSN").length <= 8) {
if (e.keyCode !== 8 || e.keyCode !== 46) { // backspace or delete
tmpVal = self.attr("filledSSN") + String.fromCharCode(e.which).replace(/[^\d\*]/g, '');
} else if (self.val().length === 0) {
tmpVal = '';
} // else if (e.keyCode === << handle other events gracefully >>
self.attr("filledSSN", tmpVal);
}
console.log("what is the filledSSN attr? = " + self.attr("filledSSN"));
});
});
</script>
<input type="text" class="form-control" id="ssn" placeholder="ssn" filledSSN="" maxlength="11">