Id Starwith和.not()选择器

时间:2014-05-09 19:50:46

标签: javascript jquery

我已经做了一个验证,以避免使用以下代码为所有输入文本添加特殊字符,但是,我输入的文本需要特殊字符。我的代码如下

$('.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,'');
});

任何建议。

提前致谢。

3 个答案:

答案 0 :(得分: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在整个页面中已经是唯一的。

希望有所帮助!

答案 1 :(得分: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,'');
    }
});

答案 2 :(得分: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, ""));
   }
);

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