在函数jquery之外获取值

时间:2013-04-13 17:10:46

标签: jquery function output

我有这段代码:http://jsfiddle.net/jevniky/v3x5B/

<form id="form">
        <input type="text" value="500" id="amount">
        <input type="radio" name="time" value="7">7
            <input type="radio" name="time" value="14" checked>14
            <input type="radio" name="time" value="21">21
            <input type="radio" name="time" value="28">28
      </form>

  amount:<br>
  <p id="amountDisp"></p>
  time:<br>
  <p id="timeDisp">14</p>  
  result:<br>
  <p id="result"></p>

和脚本:

$(document).ready(function () {
   $("input[name=time]").change(function time() {
       var time = this.value;
       $("#timeDisp").text(time);
   });
   $("#amount").keyup(function amount() {
      var amount = $("#amount").val();
      $("#amountDisp").text(amount);
      }).keyup();

});

我不知道如何获得这些变量(时间,金额)并做一些计数。例如时间+金额。 我怎么做的?因为我甚至无法在其他地方展示它们。只在内部功能。

2 个答案:

答案 0 :(得分:3)

确实没有理由将这些值存储在持久变量中。只要你想要它们,就可以从它们的源头获取它们:

$("input[name=time]:checked").val()

$("#amount").val()

或者,如果您希望它们采用纯数字形式:

var time = parseInt($("input[name=time]:checked").val(), 10);
var amount = parseInt($("#amount").val(), 10);

以下是更改任一值时更新总计的代码:

$(document).ready(function () {
    function calc() {
        var total = parseInt($("input[name=time]:checked").val(), 10) + parseInt($("#amount").val(), 10);
        $("#result").html(total);
    }

   $("input[name=time]").click(function() {
       var time = this.value;
       $("#timeDisp").text(time);
       calc();
   });
   $("#amount").userChange(function amount() {
      var amount = $("#amount").val();
      $("#amountDisp").text(amount);
       calc();
    });
    calc();

});

工作演示:http://jsfiddle.net/jfriend00/8gRr9/

仅供参考,此代码使用我的userChange jQuery插件(jsFiddle中的源代码)来检测文本字段(而不仅仅是键)的大量更改。

答案 1 :(得分:1)

您还可以使用JQuery在时间输入框的on change事件中添加时间输入字段和选项选中复选框的值。要使用JQuery在文本框中放置值,请在其选择器后使用.val()。这里有一个例子:http://jsfiddle.net/cbqps/2/

例如,将结果更改为输入文本框(如果要在文本框中显示时间和金额的总和):

 <input type="text" id="result"></input>

然后按如下所示修改功能:

$(document).ready(function () {
   $("input[name=time]").change(function time() {
       var time = this.value;
       var amount = $("#amount").val();
       var result = parseInt(time,10) + parseInt(amount,10);
       $("#timeDisp").text(time);
       $("#result").val(result);
   });
   $("#amount").keyup(function amount() {
      var amount = $("#amount").val();
      $("#amountDisp").text(amount);
      }).keyup();


});