根据用户输入返回值
Return value based on user input
使用jQuery(1.7)而不是jQueryUI-(如何)可以实现以下内容?
- 调用函数1
- 在函数1中,定义了一个变量,并将其设置为功能2的结果
- 调用时,如果单击第一个返回值true,第二个返回值false
- 在函数1中,被设置为函数2结果的变量应该等待,直到用户输入并返回值为止
- 然后应评估该值
在jQuery中有没有任何方法可以做到这一点,而不使用间隔/超时等来不断寻找为用户输入设置的中间值?
我概述了以下原则:
function function1(){
var myVariable=function2;
// nothing should happen at this point until function2 has returned a response
if(myVariable){
alert('true');
}else{
alert('false');
}
}
function function2(){
var yesbutton=$("<input type='submit' value='yes' />");
var nobutton=$("<input type='submit' value='no' />");
$('body').append(yesbutton)
$('body').append(nobutton)
nobutton.click(function(){
return false;
});
yesbutton.click(function(){
return true;
});
}
function1();
一如既往,非常感谢您的帮助!
这是可能的,只是可能不是你预期的那样。
function function1(){
var myVariable=function2();
// nothing should happen at this point until function2 has returned a response
myVariable.done(function(){
alert('true');
}).fail(function(){
alert('false');
});
}
function function2(){
var deferred = $.Deferred();
var yesbutton=$("<input type='submit' value='yes' />");
var nobutton=$("<input type='submit' value='no' />");
$('body').append(yesbutton)
$('body').append(nobutton)
nobutton.click(deferred.reject);
yesbutton.click(deferred.resolve);
return deferred.promise().always(function(){
yesbutton.add(nobutton).remove();
});
}
function1();
您可以在回调的帮助下实现它。然而,在理想的情况下,最好利用事件机制来监听和触发事件以更新变量,但对于这个简单的例子来说,这需要付出更多的努力。
function function1(){
function2(function(myVariable){
if(myVariable){
alert('true');
}else{
alert('false');
}
};
}
function function2(callback){
var yesbutton=$("<input type='submit' value='yes' />");
var nobutton=$("<input type='submit' value='no' />");
$('body').append(yesbutton)
$('body').append(nobutton)
nobutton.click(function(){
callback(false);
});
yesbutton.click(function(){
callback(true);
});
}
function1();
您不能这样做,因为函数2已经执行,并且function2
内部的click
处理程序的返回值将不是它的返回值。但您只需使用一个功能即可实现。
function function1(){
var yesbutton=$("<input type='submit' value='yes' />");
var nobutton=$("<input type='submit' value='no' />");
$('body').append(yesbutton)
$('body').append(nobutton)
nobutton.click(function(){
alert('false');
});
yesbutton.click(function(){
alert('true');
});
}
或者你也可以这样做。
function function2(yesClickHandler, noClickHandler){
var deferred = $.Deferred();
var yesbutton=$("<input type='submit' value='yes' />");
var nobutton=$("<input type='submit' value='no' />");
$('body').append(yesbutton).append(nobutton);
nobutton.click(noClickHandler);
yesbutton.click(yesClickHandler);
return deferred.promise();
}
function2(function(){
alert('true');
}, function(){
alert('false');
});
在函数1:中使用此函数
var myVariable=function2();
相关文章:
- Javascript返回值只在循环中返回一次
- 将值输入到对象,然后该对象推送到数组
- XMLHttpRequest未返回值-状态202
- 根据是否解析了 Promise 从函数返回值
- Angular,函数在(模型)工厂中返回值
- AngularJS错误:提供程序必须从$get工厂方法返回值
- 如何从客户端的数组中获取用户输入和返回值
- HTML如何根据javascript函数的返回值限制文本输入
- 动态添加的输入元素不会在脚本中返回值
- JavaScript 基本变量,返回用户输入的值
- HTML5输入类型radio向Javascript返回值
- 在 html 输入字段中使用返回值函数
- 输入类型文件无返回值
- 将函数返回值填充到<输入>要素
- 根据用户输入返回值
- 使用jQuery blur函数从输入字段返回值
- 如何在输入字段中使用javascript函数的返回值
- 返回html输入字段中以逗号分隔的对象值数组
- HTML 输入类型编号在具有 ., 值时不返回值
- 错误处理-我的JavaScript API是否应该抛出或返回无效输入的值