首次调用返回类型函数时,未调用两个javascript函数

时间:2013-01-20 12:50:21

标签: javascript html css

我需要调用2个函数onkeypress,其中第一个函数是返回类型;第二个功能没有被调用 但如果以相反的顺序使用它正在工作

要求:

  

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

正确的顺序,但第二个功能被调用;

<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. return isNumberKey(event)
  2.   
  3. calc_exchange()
  4.   

4 个答案:

答案 0 :(得分:3)

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

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

使用&amp;&amp;运算符,我们可以在keypress上调用两个javascript函数。

答案 1 :(得分:2)

调用return将执行它右侧的内容然后退出,所以第二个函数自然不会被调用。

如果不知道你的职能内部是什么,很难回答。但我建议您使用JavaScript附加事件处理程序,而不是像您一样内联。你将获得更多控制权。

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

答案 2 :(得分: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()
      }

答案 3 :(得分: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();" >