【问题标题】:Set the value of an input element to that of a variable将输入元素的值设置为变量的值
【发布时间】:2013-02-18 13:43:36
【问题描述】:

我有这个 jQuery 脚本来填充我的隐藏字段:

$("#button").click(function() {
    $("#myHiddenField").val(4);
    $("#form").submit(); 
}); 

我想用变量替换硬编码的“4”:

我试过了:

$("#button").click(function(i) { 
    $("#myHiddenField").val(i); 
    $("#form").submit(); 
}); 

但它不起作用,我不知道如何传递参数i。这部分代码有什么问题?

我有 4 个不同的按钮。我不想为每个按钮创建 4 个功能点击。在这种情况下,i 是一个隐藏字段的值,用于标识哪个按钮被点击了。

【问题讨论】:

  • 在您的代码中i 是事件对象。
  • i 来自哪里?
  • 您要发送什么值?你想从哪里得到它?您希望“i”在您的示例中包含什么?
  • 我不知道他认为“i”是什么,但在这种情况下它将是事件处理程序。
  • 显示 HTML 代码,我们可以提供更多帮助

标签: jquery click field hidden


【解决方案1】:

您可以使用属性来存储临时值并在以后访问它:

// set value
$("#button").attr("temp", 4);
...
$("#button").click(function() { 
        $("#myHiddenField").val($(this).attr("temp")); 
        $("#form").submit(); 
}); 

您也可以使用全局变量,但不建议这样做。

【讨论】:

  • 所以如果我有 4 个按钮,我可以在按钮上添加一个 attr 并使用它来制作技巧......对吗?
  • 是的,您也可以使用 .data() 代替 attr() 处理复杂数据
  • 我建议使用预定义的、可定制的“data-xyz”属性方法,因为这些属性是有效的,而无效的(如“temp”)将被 JS 编译器(如 ReactJS)丢弃-- 如果有人打算使用这个答案。
【解决方案2】:

click 事件处理程序的参数是jQuery Event Object,而不是自定义变量。你想做的很简单:

var someVariable = 4;
$("#button").click(function() { 
    $("#myHiddenField").val( someVariable ); 
    $("#form").submit();
});

当您绑定点击处理程序或在全局范围内(或在处理程序本身内,取决于值的来源)时,请确保在父范围内定义 someVariable

【讨论】:

    【解决方案3】:

    i 在您的情况下是 event... 所以它无法将值放入隐藏字段...在 click 或全局变量中定义一个变量 i ... 试试这个

    $("#button").click(function() { 
        var i="somevalue"; //value u want
        $("#myHiddenField").val(i); 
        $("#form").submit(); 
    }); 
    

    【讨论】:

      【解决方案4】:

      这取决于您想从哪里获得价值。传入匿名函数的是事件对象,而不是普通变量。试试这个:

      $("#button").click(function(event) {
      
          var x = getValueFromSomewhere();
      
          $("#myHiddenField").val(x);
          $("#form").submit(); 
      });
      

      或者这个:

      var y = getValueFromSomewhere();
      
      $("#button").click(function(event) {
      
          // The anonymous function can access variables from the outer scope.
          $("#myHiddenField").val(y);
          $("#form").submit(); 
      });
      

      【讨论】:

        【解决方案5】:

        如果要将i 设置为该值,则:

        var i
        $("#button").click(function() { 
                i=$("#myHiddenField").val(); 
                $("#form").submit(); 
        }); 
        

        val()默认返回元素的值。

        如果要将值设置为i,则需要先设置i

        var i=4
        $("#button").click(function() { 
                $("#myHiddenField").val(i); 
                $("#form").submit(); 
        }); 
        

        在您当前的代码中,i 被发送到点击生成的Event。我认为你不想这样做。

        【讨论】:

        • 这不会获取或设置变量i。在这种情况下,传递给.click 函数的参数是一个jQuery 对象而不是自定义变量。这将 a) 使用来自 #myHiddenField 的值覆盖 jQuery 对象或 b) 将 #myHiddenField 的值设置为 jQuery 对象。如需更多信息,请访问.click 函数文档页面。
        • @War10ck:哎呀。我从 OPs 问题中复制了代码,完全忘记了从 arglist 中删除 i。谢谢:)
        • 没问题的哥们。快乐编码! :)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多