如何使用Javascript(而不是jQuery)提取textarea中的每个字符更好的解释

时间:2013-12-21 22:27:46

标签: javascript

我有一个直接的经典ASP页面,用户可以输入任何标准键盘键和Enter键(如果他们愿意,甚至可以输入特殊的ALT nnn值)

我的澄清是我需要在每个ONKEYUP上向用户显示准确的字符数。所以我需要知道是否按下了ENTER键(/ n),需要将其计为2个字符以及8个其他字符,如Tilde,Caret Left花括号等,也算作2个字符。最后,我需要验证每个ONKEYUP字符以确保它们是有效的SMS字符,如果不是它们需要在T​​extArea中替换为和Underscore(帐户仅为1个字符)

所以我需要做的是能够验证ONKEYUP上的每个字符,记住可以在TextArea中的任何位置插入char,可以从TextArea中删除现有的char,或者部分或整个文本可以删除随时粘贴

当前的HTML代码如下:

Enter your message - Characters left  
<input type="text" name="chl" value="<%=Cclen%>" size=3 diabled readonly>
<br />
<textarea id="SMSmsg" name="SMSmessage" MAXLENGTH="600" rows=5 cols=35 onKeyUp="textCounter 
(this)"></textarea>
<input type="text" name="chl" value="<%=Cclen%>" size=3 diabled readonly>
<br />
<textarea id="SMSmsg" name="SMSmessage" MAXLENGTH="600" rows=5 cols=35 onKeyUp="textCounter
(this)"></textarea>

JavaScript函数testcounter如下:

function textCounter() {
    var extra = 0;
    var nextra = 0;
    var msgLength = 160 - (document.gs.SMSmessage.value).length - (document.gs.SMSbot.value).length;
    var index = document.gs.SMSmessage.value.indexOf('\n');
    while (index != -1) {
        extra += 1;
        index = document.gs.SMSmessage.value.indexOf('\n', index + 1);
    }
    Canam = nameCounter()
    if (document.gs.SMSrequest.value == 'eml') {
        extra = 0
        nextra = 0
        chnl = 999
    } else {
        if (document.gs.chnl.value > 0) {
            nextra = 3
        }
    }
    document.gs.chl.value = msgLength + extra - nextra;
    Camsg = textWarning();
}
function nameCounter() {
    var botLength = (document.gs.SMSbot.value).length;
    document.gs.chnl.value = botLength;
}
function textWarning() {
    var Ccwarn = " ";
    if (document.gs.chl.value < -299) {
        Ccwarn = "** Error ** - Extended text too long"
    } else {
        if (document.gs.chl.value < 0) {
            if (document.gs.chex.value == 'N') {
                Ccwarn = "** Error ** - Standard text too long"
            } else {
                Ccwarn = "** Warning ** - Extended text - Additional charge applied"
            }
        }
    }
    document.gs.chw.value = Ccwarn;
}

关于如何重新编写JS函数的任何建议都非常感谢,考虑到我对TextArea中用户操作的评论

0 个答案:

没有答案