2009-06-25 57 views
3

我想得到一些输入是如何使用JQuery从文本框(或textarea)中删除某些字符。我有C#中的代码,但我似乎无法将其转换为JQuery javascript。我的问题是,我不知道如何从文本框中获取字符数组的值,然后我可以循环并与给定的一组不想要的字符进行比较。 这就是 “远” 我进来的JQuery:使用JQuery从文本框中删除不需要的字符

$("input[type=text], textarea").change(function() { 

    // code here 

}); 

这是我在C#代码:

for (int i = 0; i < charArray.Length; i++) 
{ 
    current = charArray[i]; 
    if ((current == 0x9) || 

     (current == 0xA) || 

     (current == 0xD) || 

     ((current >= 0x20) && (current <= 0xD7FF)) || 

     ((current >= 0xE000) && (current <= 0xFFFD))) 
     _validXML.Append(current); 
} 

return _validXML.ToString().TrimEnd((char)32, (char)160) ; 

UPDATE:

我有一些答案的组合去下面(我会upvote他们)和我的最终JQuery看起来像这样,并工作:

$(document).ready(function() { 
    $(":text, textarea").change(function() { 
     var text = ""; 
     var arr = $(this).val() 
     $.each(arr, function(i) { 
      var c = arr.charCodeAt(i); 
      if ((c == 0x9) || 
       (c == 0xA) || 
       (c == 0xD) || 
       (c >= 0x20 && c <= 0xD7FF) || 
       (c >= 0xE000 && c <= 0xFFFD)) 
      { 
       text += arr.charAt(i); 
      } 
     }); 
     $(this).val(text); 
    }); 
}); 

谢谢大家!

+0

基于该验证XML?我只能假设这不是utf-8(每个字符最多可以有6个字节) – 2009-06-25 15:07:42

+0

验证xml ...?我想你是指我的c#变量_validXml ......这与我在客户端上试图做的事情无关。 – 2009-06-25 15:44:24

回答

1

Textarea:

<textarea id="item" name="item" rows="5" cols="80">Some text in here</textarea> 

jQuery代码:

var text = $('#item').val(); 
var newtext = ""; 
for (var i = 0; i < text.length; i++) { 
    var c = text.charCodeAt(i); 
    if ((c == 0x9) || (c == 0xA) || (c == 0xD) || 
     (c >= 0x20 && c <= 0xD7FF) || 
     (c >= 0xE000 && c <= 0xFFFD)) { 
     newtext += c; 
    } 
} 
$('#item').val(newtext); 

这实际上已经很少做与jQuery没有记错,除了访问文本数据,并重新设置它。

1

您可以使用charCodeAt()方法结合字符串的length属性来遍历字符串中的字符。

喜欢的东西:

$("input[type=text], textarea").change(function() { 
    var text = $(this).val() 

    for(var i = 0; i < text.length; ++i) { 
    var currentChar = text.charCodeAt(i); 

    // Do something with it... 
}); 

我最初的版本中使用charAt(),但因为它看起来像你处理Unicode代码点,charCodeAt()是比较合适的。

+0

(+1)谢谢,让我走在正确的轨道上... – 2009-06-26 10:36:06

-1

在input/textarea上使用事件观察者(onkeydown/onkeypress/onkeyup),按下按键,如果按键是不需要的字符,则停止事件发生。

$("input[type=text], textarea").observe('keypress', function(e) { 
var keynum; 
if(window.event) 
{ 
    keynum = e.keyCode 
} 
else if(e.which) 
{ 
    keynum = e.which 
} 
if(keynum == '13' || keynum == 'something else' || [...]) 
{ 
    Event.stop(e); 
} 
}); 
+3

非常好,但不处理粘贴文本的情况。 – razzed 2009-06-25 15:11:41

+0

叶普,这就是我想要实际验证 – 2009-06-25 15:41:24

-1

得到textarea的尝试的价值:

$('input[type=textarea]').change(function(){ 
    var value = $(this).val(); 
    ........... 
}); 

删除不需要的角色尝试这个例子..我从jQuery的文档复制(jQuery.grep())

var arr = [ 1, 9, 3, 8, 6, 1, 5, 9, 4, 7, 3, 8, 6, 9, 1 ]; 
$("div").text(arr.join(", ")); 

arr = jQuery.grep(arr, function(n, i){ 
    return (n != 5 && i > 4); 
}); 
$("p").text(arr.join(", ")); 

arr = jQuery.grep(arr, function (a) { return a != 9; }); 
$("span").text(arr.join(", ")); 
-1

我更喜欢从摆在首位得到进入(从我的黑幕过去)停止字符,使用这种类型的JavaScript函数:

每个输入控件有这样的事情就可以了: onkeypress事件='checkKey (此, “A-ZA-Z0-9”, “N”, “10”);”

功能看起来像:

//**************************************************************************** 
    // Function: checkKey() 
    // Author: Ron Savage 
    //  Date: 10-11-2004 
    //  
    // Description: This function tests reg exp syntax. 
    //**************************************************************************** 
    function checkKey(textControl, reExpr, allCaps, maxlen) 
    { 
     popupMessage.hide(); 

     keyStr = String.fromCharCode(event.keyCode); 
     textLength = textControl.value.length; 

     if (allCaps == 'Y') 
     { 
     keyStr = keyStr.toUpperCase(); 
     event.keyCode = keyStr.charCodeAt(0); 
     } 

     if (reExpr != '') 
     { 
     reString = '[^' + reExpr + ']'; 
     re = new RegExp(reString, 'g'); 

     //alert('RE: ' + reString); 

     result = keyStr.match(re); 

     if (result) 
      { 
      beep(); 
      event.returnValue = false; 
      showPopupMessage(textControl, result.toString() + ' not allowed!'); 
      } 
     } 

     if (textLength > maxlen) 
     { 
      beep(); 
      event.returnValue = false; 
      showPopupMessage(textControl, 'Max length [' + maxlen + '] exceeded!'); 
     } 

     //alert('Key: ' + keyStr + ' code: ' + event.keyCode); 
     } 
6

我就不会这样对正则表达式的情况下,如:

$("input[@type='text'], textarea").change(function() { 
    this.value = this.value.replace(/[^\w\d]+/gim,""); 
}); 
相关问题