2014-05-09 62 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, "")); 
    } 
); 

很抱歉,這並不直接回答你的問題。沒有看到代碼很難看出你的語法有什麼問題。