2016-06-17 4 views
0

http://jsbin.com/cunejafehe/edit?html,js,console,outputは、入力フィールドにのみ特定の文字

var reg = /^[a-zA-Z\d\s\-'#(),"]*$/; 
 
    
 
function myFunction(e){ 
 
    console.log(e.value); 
 
    if(reg.test(e.value)) 
 
    { 
 
    return false; 
 
    } 
 
}
<input onkeyup="myFunction(this)" type="text">

上記のコードは動作しませんなぜ私が疑問に思うの許可、私は何をしたいだけで、これらの文字が入力にすることができます: 0、および-'#(),"

+0

は 'trueを返すことができますか? – Toto

+0

これは、 'と' var reg =/[a-zA-Z \ d \ s \ - '#()、]]/; 機能checkInput(e)は { varがOK = reg.test(に、String.fromCharCode(e.charCode)); 場合 e.preventDefault()(OK!);} 。 ' –

答えて

1

var reg = /^[a-zA-Z\d\s\-'#(),"]*$/; 
 
    
 
function myFunction(e){ 
 
    if (!e.value.match(reg)) { 
 
    e.value = e.value.slice(0, -1); 
 
    } 
 
}
<input onkeyup="myFunction(this)" type="text">
は、このアプローチを見てください。ここで私はDOM要素参照の代わりに eventオブジェクトを渡しています、そして、私たちはRegx式に対してそれをチェックしています。 `の代わりに` false`を、

var reg = /^[a-zA-Z\d\s\-'#(),"0-9]*$/ 
 
    
 
function myFunction(e){ 
 
    var c = String.fromCharCode(e.which) 
 
    console.log(c); 
 
    if(reg.test(c)) 
 
    { 
 
    return true; 
 
    } 
 
else 
 
    return false; 
 
} 
 

 
$(document).ready(function(){ 
 
    $("#mytextbox").keypress(function(e) { 
 
    return myFunction(e); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
Inline function : <input onkeypress="return myFunction(event)" type="text"> 
 
<br/> 
 

 
Binding a function : <input id="mytextbox" type="text">

+0

インライン関数を使用する代わりにバインドしたいのですが、インライン関数の戻り値が悪いです。 –

+0

キーイングをバインドすることもできます。 '$(" #mytextbox ").keypress(function(e){' – vijayP

+0

@AlienXu - コードスニペットfインライン関数の代わりにバインディングを使用します。 – vijayP

0

test方法は、RegExpオブジェクトに属しているこれらの文字を含むa-z1-9あなたが使用していないので、reg.test(c)からc.match(reg)をmyFunction内に変更する必要があります。

また、thisを渡すことでフィールドの完全な値に取り組んでいます。私はあなたが非常にエレガントでもない場合は、このような何かを行うことができますね。

+0

は答えを編集I – lud1977

+0

Yup ...今すぐ動作します。コードをテストするために質問を編集する自由を取った – ClasG

関連する問題