从同一函数返回在函数内的事件处理程序中创建的值

时间:2015-06-15 07:51:00

标签: javascript jquery events

我有一个输入框和一个转到按钮。当用户单击go按钮时,我想将插入的值与另一个值进行比较。我试图在这样的函数中获取输入值

function getInput(){
        var entry ='';
        $('button.go').on('click',function(){
            var entry = $(this).siblings('.input').val();
            //return entry
        })
        return entry


}

基本上我想返回有输入值的var条目,所以我可以稍后在代码中比较这些值

var input = getInput() // this should have input value
is input > othervalue

我在document.ready()

中调用了getInput

4 个答案:

答案 0 :(得分:1)

你正在做的一切正确。有些范围相关的问题无法帮助您获得预期的结果。我的建议是将othervalue变量定义为全局,并在函数内部检查它,如

function getInput(){       
    $('button.go').on('click',function(){
       var entry = $(this).siblings('.input').val();     
        if(entry>othervalue) //your code     
    });     
}

我不确定您为何在函数内绑定动态click事件。如果除了这部分之外没有其他任何你需要做的事情,那么将这段代码包装在document.ready内。

答案 1 :(得分:0)

我建议全局声明你的var entry ='';并在比较之前分配它。

var entry="";
$('button.go').on('click',function(){
     entry = $(this).siblings('.input').val();
});
//do the comparing..

答案 2 :(得分:0)

您应该在委派点击功能之后,在功能内进行比较。

var entry = "";
$('button.go').on('click', function(){
     var entry = $(this).prev('.input').val();
     if (entry < x)
         // Do something
});

答案 3 :(得分:0)

我还不清楚你想要完成什么。

我做了一些可能接近你想要的代码。

jQuery().ready(function()
{
  var startValue = $('input[name="the_input"]').val();
  $('form').submit(function()
  {
    var currentValue = $('input[name="the_input"]').val();
    $('body').append('<br />' + startValue + ' - ' + currentValue + ' = ' + (startValue - currentValue));
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<form action="#" method="post">
  <input type="text" value="10" name="the_input" /><br />
  <input type="submit" value="go!" />
</form>