1

使用 Javascript 的 onKeypress 尝试在返回后调用函数。这不起作用,因为由于验证数字,该字段尚未完成。

onKeyPress="return numbersonly(event, false);
            anotherfunction();"

使这个变得棘手的是返回必须在调用“anotherfunction()”之前发生。

4

3 回答 3

1

用这个:

onkeypress="if (numbersonly(event, false)) {anotherfunction(); return true;} else {return false}"

由于像这样的长内联 Javascript 让我感到厌烦,我将其移至一个函数:

function maybe_another(event) {
    if (numbersonly(event, false)) {
      anotherfunction();
      return true;
    } else {
      return false
    }
 }

然后使用:

onkeypress="return maybe_another(event)"

在输入元素中。

于 2013-06-28T23:11:54.633 回答
0

这将在函数返回后调用 anotherFunction():

onKeyPress="setTimeout(anotherFunction, 0); return numbersonly(event, false);">

它的行为与 Barmar 的回答略有不同。他在调用 numbersOnly 之后,但在事件处理程序返回之前调用 anotherFunction。事件处理程序返回后,我的将调用 anotherFunction 。两者在不同的情况下都有用。

请注意,如果您想将参数传递给 anotherFunction,您应该这样做:

onKeyPress="setTimeout(function(){anotherFunction(1,2,3);}, 0); return numbersonly(event, false);">
于 2013-06-28T23:16:26.267 回答
0

尝试类似:

function E(e){
  return document.getElementById(e);
}
function FirstFunction(event, truthiness){
  return 'Truthiness was set to '+truthiness;
  //of course you must really be trying to run something from the Event
  //Object or you don't need the event argument in this function or the
  //keyup function below
}
function SecondFunction(e){
  E(e).innerHTML = this.value;
}
E('txt').onkeyup = function(ev){
  var e = ev || window.event;
  E('out1').innerHTML = FirstFunction(ev, false);
  SecondFunction.call(this, 'out2');
}

如果你还不明白callthis那也没关系。重点是向您展示您可以将任意数量的函数放入分配给事件侦听器的函数中。这种编程风格可以保存在外部 JavaScript 文件中,该文件将缓存在用户浏览器中。有些人将其称为 Jnobtrusive JavaScript,因为它并不存在于您的 HTML 中。另一种方式,如果你出于某种没有意义的原因,坚持使用 Obtrusive JavaScript,是将 SecondFunction 传递给 FirstFunction 并在你的return值之前执行它,比如:

function FirstFunction(func, funcArg, anotherFunc, anotherFuncArg){
  func(funcArg);
  anotherFunc(anotherFuncArg);
}
function SecondFunction(e){
  E(e).innerHTML = 'this is just a test';
}
<input type='text' onkeyup='FirstFunction(SecondFunction, "out", function(){console.log = "You can use an Anonymous Function the same way"})' name='txt' id='txt' />

这向您展示了如何将未执行的函数作为参数传递。稍后使用该参数。函数名称在 JavaScript 中基本上是可变的。在 PHP 中,您可以执行相同类型的操作,只需将您的函数转换为字符串即可。

大多数 JavaScript 程序员更喜欢第一种方法。有关完整示例,请参见下面的 Fiddle。

http://jsfiddle.net/PHPglue/3q4DC/4/

于 2013-06-28T23:50:32.087 回答