使用jQuery检索输入值

时间:2017-09-16 15:02:17

标签: javascript 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/

由于

4 个答案:

答案 0 :(得分:2)

如果在click函数处理程序之外声明var normal,则初始值将为空,因为DOM准​​备就绪后文本框中没有值。但是如果您在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"/>

答案 1 :(得分:1)

您在return ticket;上分配normal而不是在点击时重新分配,所以正常情况将是您在页面加载时为输入字段提供的任何值。

答案 2 :(得分:0)

试试此代码

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)

答案 3 :(得分: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被输入的东西或输入的东西之后。我的意思是有价值的东西存储在input change沿着

    $(document).ready(function(){
     $('#a').bind('input propertychange', function() {
          normal = $('#a').val();
         }
     })
    
  3. 小提琴 http://jsfiddle.net/Jayas/vhjm8v31/4/

      

    tl:dr - 将文本重新绑定到声明的变量不会“自动”发生

    所以现在当你在重新分配normal后点击按钮时,你会看到输入的值。

    或者您也可以按照

    的方式捕获正常点击事件的值
      $('#b').on("click", function() {
            var normal = $('#a').val();
            alert(normal);
      });