所以我对onkeyup事件的文本框的onchange事件和一个非常简单的掩码函数(将破折号添加到SSN)进行了一次AJAX调用。这两个函数都可以正常工作,但是,如果蒙版插入破折号然后我移出文本框,onchange事件将不会触发。
任何人都有任何想法?我的猜测是,通过使用掩码功能更改值,文本框不再认为有任何改变。
由于
SSN: <input id="SSN" maxlength="11" size="8" onchange="validateSSN();" onkeyup="mask()">
<span id="SSNnote"></span>
<script type="text/javascript">
function validateSSN(){
var cfc = new myajax();
cfc.setCallbackHandler(function(AjaxResults) {UpdateValidationNotes('SSNnote', AjaxResults);});
cfc.ValidateSSN(document.getElementById("SSN").value);
}
function mask(){
var temp = document.getElementById("#WhichName#").value;
var e = window.event;
if (e.keyCode == 189){
document.getElementById("SSN").value = temp.substring(0,temp.length-1);
return false;
}
if ( temp.length == 3 || temp.length == 6)
if (e.keyCode != 8)
document.getElementById("SSN").value = document.getElementById("SSN").value + '-';
}
答案 0 :(得分:3)
是的,您是对的,onchange
如果您使用javascript更改了该框的值,则会被激活。因此,您需要在validateSSN()
- 函数内手动调用mask
。
答案 1 :(得分:1)
JavaScript功能:
<script type="text/javascript">
function mask(str, textbox, loc, delim) {
var locs = loc.split(',');
for (var i = 0; i <= locs.length; i++) {
for (var k = 0; k <= str.length; k++) {
if (k == locs[i]) {
if (str.substring(k, k + 1) != delim) {
str = str.substring(0, k) + delim + str.substring(k, str.length)
}
}
}
}
textbox.value = str
}
</script>
将此代码写入正文标记:
<label class="label">Social Security Number: *</label>
<input type="text" size="15" name="social_security_number" class="input"
id="txtsocial_security_number" runat="server"
onKeyUp="javascript:return mask(this.value,this,'3,6','-');"
onBlur="javascript:return mask(this.value,this,'3,6','-');" maxlength="11">
这将产生以下格式:797-97-9797