0

我正在尝试为我开发的网站构建一个自定义计算器。我是一名新开发人员,这有点过头了,但我正在努力学习。

我正在尝试获取 2 个变量并将它们组合成 1,然后使用它通过 ajax 从另一个页面调用 div。那么我遇到的问题是,当我添加代码以组合 2 个变量时,它会导致分页符,我不知道为什么。

     $(function(){
        $("input:radio[name=f_1]").click(function() {
          var type = $(this).val();
        });
        $("input:radio[name=f_1a]").click(function() {
          var prod = $(this).val();
        });

        var JobType = type + prod;
    });

你可以在这里看到它:http ://rdmproductions.com/dev/

如果您选择 JobType 变量的行,则页面将按应有的方式运行。我只是不明白发生了什么以及如何解决它。

4

4 回答 4

2

您的变量typeprod是局部变量,因此它们在单击处理程序回调函数之外不可用。

如果您希望它们在这些点击处理程序之外可用,那么您需要在更高级别的范围内声明它们或将它们存储在一些其他对象中,这些对象在您的点击处理程序函数的生命周期之外是持久的。

可能您想要做的是在需要时获取 type 和 prod 的值,而不是尝试将它们保留在JobType.

您可以像这样按需获取数据:

var JobType = $("input:radio[name=f_1]").val() + $("input:radio[name=f_1a]").val();

您甚至根本不需要两个单选按钮上的点击处理程序。


根据您的最新评论进行编辑:

您可以收听两个无线电组的更改,检查两者何时被选中,然后使用如下代码对组合值执行某些操作:

$("input:radio[name=f_1], input:radio[name=f_1a]").change(function() {
    var f1 = $("input:radio[name=f_1]:checked").val();
    var f1a = $("input:radio[name=f_1a]:checked").val();
    if (f1 && f1a) {
        // both radio buttons have been selected, do something here
        var jobType = f1 + f1a;
        // do something with jobType here
        alert(jobType);
    }
});

你可以在这里看到它的工作原理:http: //jsfiddle.net/jfriend00/FJcTA/

于 2012-04-20T22:05:42.583 回答
1

变量 type 和 prod 仅在其相关函数的范围内有效。此外,只有在单击控件时才会触发 onclick 事件,这将在您的代码运行后的某个时间点发生。代码似乎在页面呈现时运行,因此用户无论如何都没有机会单击按钮。因此,您需要在用户有机会完成表单后的合理时间执行计算。明显的候选人将在页面上提交,或通过其他事件,例如用户单击按钮。您甚至不需要使用单选按钮中的 onclick 事件,只需连接单选按钮中的值,例如 ...

function onSubmit() {
    var type = $("input:radio[name=f_1]").val();
    var type = $("input:radio[name=f_1a]").val();
    var jobType = type + prod;
    // do something with jobType
}

希望这可以帮助

于 2012-04-20T22:05:14.983 回答
0

尝试这个:

$(function() {

    $("input:radio[name^=f_1]").click(function () {

      var total = 0;           

       $("input:radio[name^=f_1]").each(function () {
           total += parseInt($(this).val());
       });

   });

});
于 2012-04-20T22:08:00.390 回答
0
 $(function () {
    var type, prod, jobType;
    $("input:radio[name=f_1]").click(function() {
      type = $(this).val();
    });
    $("input:radio[name=f_1a]").click(function() {
      prod = $(this).val();
    });
    jobType = type + prod;
});
于 2012-04-20T22:08:25.190 回答