我需要调用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;
}
我需要调用以下函数顺序;
- return isNumberKey(event)
- calc_exchange()
醇>
答案 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();" >