当第一次调用返回类型函数时,没有调用两个javascript函数



我需要调用2个函数onkeypress其中第一个函数是返回类型;第二个函数没有被调用但是如果倒序使用

要求:

OnKeyPress,该键应被验证。如果是数字,则接受该值在文本框中,然后复制值到另一个文本框;如果不是数字,然后什么都不做

顺序正确,但第二个函数没有被调用;

<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(事件)
  2. calc_exchange ()

你可以在按键上调用两个javascript函数,其中第一个函数是返回类型函数。

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

使用,,操作符,我们可以在按键上调用两个javascript函数。

调用return将执行它右边的内容,然后退出,因此自然不会调用第二个函数。

在不知道函数内部是什么的情况下很难回答。但我建议你用JavaScript附加事件处理程序,而不是像你这样的内联。这样你会得到更多的控制。

查看这里如何附加事件处理程序:http://www.quirksmode.org/js/events_advanced.html

所以你不能在返回后调用任何东西,所以你可以试试这个。如果输入错误会引起警报。

<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()
      }

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();" >

最新更新