2017-08-06 6 views
0

私のウェブサイトの形式でtype = "number"の入力を検証するための小さなjavascriptを作成しようとしています。基本的に、この関数は、入力の最大長が渡された引数よりも長くないことを確認しようとしています.2つの引数を取り、1つはhtml要素で、もう1つはmaxlengthです。しかし、この関数をinput要素に追加しても、動作していないようです。私が間違っていた場所と私が逃したコンセプトを見て、私に教えてください。javascript関数に要素を渡して、EventListenerに追加します。

/* Show submit button only when the form has been validated */ 
/* Variables */ 
var form = document.querySelector(".resForm"); 
var resFormBtn = document.querySelector(".submitButton"); 
var numInput = document.querySelector("#numberInput"); 

function showSubmitButton(){ 
if (form.checkValidity() === true){ 
    resFormBtn.style.display = "block"; 
} 
} 

function validateNumInput (maxlength,ele){ 
if (ele.length > maxlength){ 
    ele.value = ele.value.slice(0,maxlength); 
} 
} 

form.addEventListener("change",showSubmitButton,false); 

numInput.addEventListener("input",function(){ 
validateNumInput(8, numInput); 
},false); 

答えて

2
if (ele.length > maxlength) 

間違って何かがここにあります。 eleは参照されるノードであり、 "length"というプロパティはありません。したがって、条件内のコードは決してトリガーされません。

単にうまく

+0

OMG行います

ele.value.length > maxlength 

にコードを変更することを、あなたは私の一日保存しました。どのように愚かな私は –

+0

だったと信じられない私はまだjavascriptに新しいので、こんにちは、この方法は、それは動作しません? numInput.addEventListener( "input"、validateNumInput(8、numInput)、false); –

+0

@Anlinyang addEventListenerは関数をパラメータとして取りますが、関数式を過ぎた場合(関数がすぐに呼び出す場合)、パラメータは未定義になります – Mactavish

関連する問題