0

2つの関数をonkeypressで呼び出す必要があり、そのうち最初の関数はreturntypeです。2番目の関数は呼び出されませんが、逆の順序で使用すると機能します

要件:

OnKeyPressでは、キーを検証する必要があります。数値の場合は、TextBoxで値を受け入れてから、その値を別のテキストボックスにコピーします。数字でない場合は、何もしません

正しい順序ですが、2番目の関数が呼び出されていません。

<input type="text" name="no_of_units" id="no_of_units" size="5" 
onkeypress="return isNumberKey(event);calc_exchange();">

逆の順序で、両方の機能が機能しています。最初にisNumberKey関数を呼び出す必要があります。

<input type="text" name="no_of_units" id="no_of_units" size="5"
 onkeypress="calc_exchange();return isNumberKey(event);"

関数 :

function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            return false;
         return true;
      }
function calc_exchange()
{
var raw1=document.getElementById("no_of_units").value;
document.getElementById("next_no_of_units").value=raw1;
}

次の順序の関数を呼び出す必要があります。

  1. isNumberKey(event)を返します
  2. calc_exchange()
4

4 に答える 4

3

keypressで2つのjavascript関数を呼び出すことができます。ここで、最初の関数はリターン型関数です。

<input type="text" name="txtName" id="txtName" size="5" 
Onkeypress="return isNumberKey(event,this) && clickButton(event,'imgbtnSearch')">

&&演算子を使用すると、keypressで2つのjavascript関数を呼び出すことができます。

于 2015-03-31T09:30:50.163 に答える
2

呼び出しreturnは、その右側にあるものを実行してから終了するため、当然、2番目の関数は呼び出されません。

関数の内容を知らずに答えるのは難しいです。ただし、イベントハンドラーをJavaScriptでアタッチし、インラインではないことをお勧めします。そうすれば、より多くの制御が可能になります。

イベントハンドラーをアタッチする方法については、こちらをご覧ください:http ://www.quirksmode.org/js/events_advanced.html

于 2013-01-20T12:54:49.967 に答える
1

したがって、帰国後は何も呼び出せないので、これを試すことができます。間違った入力の場合はアラートを発生させます。

<input type="text" name="no_of_units" id="no_of_units" size="5" 
onblur=calcexchange() onkeypress="isNumberKey(event)">
....
function isNumberKey(evt)
      {
         var charCode = (evt.which) ? evt.which : event.keyCode
         if (charCode > 31 && (charCode < 48 || charCode > 57))
            alert("Wrong I/P");
             evt.focus()
      }
于 2013-01-20T13:00:23.410 に答える
0

は最初のreturnステートメントである必要はありません。関数を順番に呼び出して、後で結果を返すだけです。

<input type="text" name="no_of_units" id="no_of_units" size="5" 
onkeypress="var result = isNumberKey(event); calc_exchange(); return result;">

の結果を返すとisNumberKey、デフォルトのアクションが妨げられる可能性があります。falseが返された場合、入力は無視されます。数字以外を防いで実行したいようですcalc_exchange。この場合、入力が数値でない場合にのみfalseを返す必要があります。

if(!isNumberKey(event)) { // validate input
  return false; // it's not a number, so prevent default action (do nothing)
}
calc_exchange(); // it was a number, copy the value

唯一の問題は、実行時calc_exchangeに、入力された数値がテキストボックスの値に挿入されていないことです。ただし、ユーザー入力が行われたときなど、他のイベントを聞くことはできます。

<input type="text" name="no_of_units" id="no_of_units" size="5" 
onkeypress="return isNumberKey(event);"
onchange="calc_exchange();" >
于 2013-01-20T12:55:08.690 に答える