2014-05-09 38 views
0

我已经完成了一个验证,以避免使用以下代码对所有输入文本进行特殊字符输入,但是,我输入了需要特殊字符的文本。我的代码如下Id Starwith和.not()选择器

$('.twTextinput input, .twTextinput textarea').not($('#txtEmailPersonal input, #txtEmailTrabajo input')).keyup(function(){ 
    this.value = this.value.replace(/[^a-zA-Z0-9 _]/g,''); 
}); 

问题是这样的,我有一个输入文本,必须在选择器.not()。是一个输入文本,其ID为以“iccw”开始。我试着用这段代码但不起作用

$('.twTextinput input, .twTextinput textarea').not($('#txtEmailPersonal input, #txtEmailTrabajo input, input[id^="iccw"]')).keyup(function(){ 
    this.value = this.value.replace(/[^a-zA-Z0-9 _]/g,''); 
}); 

有什么建议。

在此先感谢。

回答

0

这是一个非常复杂的方式,单独一个特殊的输入,你不觉得吗?

我倾向于希望找到所有“常规”textareas或输入到一个容器中,并使用find来收集它们,然后单出其他“正常”输入。

$normal_input_list = $(container).find('input.normal, textarea.normal'); 
$special_input_list = $('#icww'); 

onKeyupNormal = function(){ 
    this.value = this.value.replace(/[^a-zA-Z0-9 _]/g,''); 
}; 

// and now bind the handler 
$normal_input_list.on('keyup', onKeyupNormal); 

如果有一个很好的理由来选择,你有,那么我已经确定了以下应工作:

$('input, textarea').not('#wmd-input'); 

指定输入和ID是多余的,因为ID已在页面上独一无二。

希望有帮助!

0

这里是一个黑客:

$('.twTextinput input, .twTextinput textarea').not($('#txtEmailPersonal input, #txtEmailTrabajo input' 
)).keyup(function(){ 
    if(this.id != 'iccw') { 
     this.value = this.value.replace(/[^a-zA-Z0-9 _]/g,''); 
    } 
}); 
0

我会倾向于使用HTML属性来控制这一点。我觉得它更易于管理。

<textarea data-allowedchars="[^a-zA-Z0-9 _]"><textarea> 
<textarea ></textarea> 

<input data-allowedchars="[^a-zA-Z0-9 _]" /> 
<input /> 

JS

$("body").on("keyup", "[data-allowedchars]", 
    function(e){ 
     var $t = $(this), 
      re = new RegExp($t.data("allowedchars"),'g'); 

     $t.val($t.val().replace(re, "")); 
    } 
); 

很抱歉,这并不直接回答你的问题。没有看到代码很难看出你的语法有什么问题。