2016-06-26 17 views
-1

私はjavascriptを初めて使用しています。私はonchange()に問題があります。onchange()で複数のパラメータを持つ関数を呼び出す方法

以下はコードです。

<input type="text" name="txt" id="aa" onchange="test()"> 
<input type="text" name="txt" id="bb" onchange="test()"> 

function test(a, b, c) { 
    var i = 0; 
    if (a.value == '') { 
     document.getElementById("aa").innerHTML = "a Cannot Be Blank "; 
     return i; 
    } else if (b.value == '') { 
     document.getElementById("bb").innerHTML = "b Cannot Be Blank "; 
     return i; 
    } else { 
     i = 1; 
     return i; 
    } 
} 

は私がテキストボックスvalidation.Iを行わできるように上記の関数を呼び出す方法を知っているscroll down toパソコンへ転送しようとしているのonchange =「テスト(本)」、しかし、私はworks.Pleaseは私に解決策を見つけるdoesnot。すべての最初の

+0

あなたがここで達成したいと思っているものは不明です。明確にしていただけますか? –

+0

texboxの検証はonchange()で行う必要があります。 –

+0

関数は、2つの要素への参照を渡すことを期待しているようですが(そして 'c'引数は使用しません)、既に問題の2つの要素への参照がハードコードされているので、パラメータを使用しません。今のところ、 ''要素の '.innerHTML'を設定してエラーメッセージを表示しようとしているので機能しません。これは動作しません。それはあなたが使用しない価値を戻しています。 – nnnnnn

答えて

0

1 - あなたは開口部の数の世話をしなければならないのJSに関数を記述し、閉じたまま、ブラケット(スコープ)

function test(a,b,c) 
{ 
    var i =0; 
    if (a.value =='') 
    { 
    document.getElementById("aa").innerHTML="a Cannot Be Blank "; 
    return i; 
    } 

    else if (b.value =='') 
    { 
     document.getElementById("bb").innerHTML="b Cannot Be Blank "; 
    return i; 
    } 

    else { 
    i=1; 
    return i; 
    } 


} 

2 - あなたは次のように行うことができます。..のonchange機能でmultilpleパラメータを渡しますこの

<input type="text" name="txt" id="aa" onchange="test(2,2,5)"> 
0

何かが変更されたときに入力フィールドの空の値をチェックしたいとします。パラメータとして使用される各入力IDでチェックしてみてください。

<input type="text" name="txt" id="aa" onchange="test(this.id,'bb')">//this.id returns current element id 
<input type="text" name="txt" id="bb" onchange="test('aa',this.id)">//use id as parameters 
<script> 
function test(a,b) 
{ 
    var i =0; 
    var aa = document.getElementById(a);//call element by parameter id 
    var bb = document.getElementById(b); 
    if (aa.value =='') 
    { 
    aa.value="a Cannot Be Blank "; 
    } 

    else if (bb.value =='') 
    { 
     bb.value="b Cannot Be Blank "; 
    } 

    else { 
    i=1; 
    return i; 
    } 
}   
    </script> 
0

1)あなたは<input>要素の "値" を操作したいときは、innerHTMLのを使用しないでください。あなたはこのように、その値の属性にアクセスして、それを操作する:

document.getElementById("MY_INPUT_ID").value = 'Cannot Be Blank'; 

2)あなたは、複数のfiledsの検証をしたいときに、あなたは「リアルタイム」でのフォームの送信やないでそれを行います。 「リアルタイム」検証を行う場合は、毎回1つのフィールドにのみフォーカスを当てる方が良い(他の制限が適用されない場合)。

3)onChangeイベントは<select>の要素であり、<input>要素で発生しません。あなたが)あなたが

4を使用する必要があります<input>要素を "監視" したい場合は、入力フィールドに "空白にすることはできません" を挿入べきではありませんそれはテキストとしてカウントされるので、問題が発生します。メッセージを表示する場合は、入力の横にメッセージ付きのコンテナを作成する必要があります。

次のコードは、あなたがしようとしていることの正しい方向にあなたを導くための例です。

<input type='text' name='aInput' id='aInput' onkeyup='validate(this);'></input> 
<input type='text' name='bInput' id='bInput' onkeyup='validate(this);'></input> 
<div id='error'></div> 
<script language="JavaScript"> 
    function validate(el){ 
    var myInputValue = el.value; 
    var myInputID = el.id; 

    if(myInputValue === ''){ 
     document.getElementById(myInputID).style.backgroundColor = 'rgba(255,0,0,0.32)'; 
     document.getElementById('error').innerHTML = el.name + " Cannot Be Blank"; 
    }else{ 
     document.getElementById(myInputID).style.backgroundColor = '#fff'; 
     document.getElementById('error').innerHTML = ""; 
    } 
    } 
</script> 
関連する問題