2017-09-16 65 views
0

我想使用jQuery检索输入值。使用jQuery检索输入值

这里的HTML:

<input type="text" name="a" id="a" /> 
<input type="button" name="b" id="b" value="Click here"/> 

这里是jQuery的:

$(document).ready(function() { 

    var normal=$('#a').val(); 
    $('#b').on("click", function() { 
      alert(normal); 
    }); 

}); 

由于某些原因,alert(normal);不工作而alert($('#a').val());一样。为什么?是不是normal$('#a').val();保持相同的值?

如果你想要的jsfiddle:http://jsfiddle.net/L2uX4/20/

感谢

+0

行,因为它不是动态....它不会重新绑定,你得到的价值在那个时间点是你所拥有的,直到你再次覆盖变量。 – epascarello

回答

1

你分配在document.ready()normal,而不是重新分配,当你点击,所以正常将是你给输入字段的任何值时,该页面负载。

0

如果声明var normal点击功能处理器之外,那么初始值将是空的,因为在文本框中没有值,一旦DOM准备试试这个代码

$(document).ready(function() { 


     $('#b').on("click", function() { 
     var normal=$('#a').val(); 
     alert(normal); 
     }); 

    }); 
2

。但是,如果您在click事件处理程序中声明它,那么只要在文本框中键入内容并单击该按钮,就会分配该值。 下面的代码对我的作品

$(document).ready(function() { 
 

 
    
 
    $('#b').on("click", function() { 
 
      var normal= $('#a').val(); 
 
     alert(normal); 
 
     // same as alert($('#a').val()); 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="a" id="a" /> 
 
<input type="button" name="b" id="b" value="Click here"/>

0

是的,你说得对,

提供的文本框id= a对负载的一些文字。

我的意思是沿着

<input type="text" name="a" id="a" value= "foo"/> 

小提琴线的东西:http://jsfiddle.net/Jayas/vhjm8v31/2/

现在,如果你打Clickhere按钮,它会显示foo

在你的情况

  1. 当你的a值分配给normal文本框为空。
  2. 您没有任何处理程序或事件挂钩重置/设置变量normal上的东西被键入或输入的东西后。我的意思是沿着具有沿

    $(document).ready(function(){ 
    $('#a').bind('input propertychange', function() { 
         normal = $('#a').val(); 
        } 
    }) 
    

小提琴http://jsfiddle.net/Jayas/vhjm8v31/4/

TL的线存储在input change值线的东西:博士 - 文本到宣布重新绑定变量不会“自动”发生

所以现在当你点击按钮af ter重新分配normal您将看到键入的值。

或者你也可以捕捉的正常的单击事件的值作为你已经拥有它,沿

$('#b').on("click", function() { 
     var normal = $('#a').val(); 
     alert(normal); 
    });