Javascript 将输入的默认值更改为隐藏输入的值

Javascript 将输入的默认值更改为隐藏输入的值,javascript,jquery,html,Javascript,Jquery,Html,我有一个表单生成了一个不正确的名字和姓氏。所以我用正确的名字和姓氏进行了隐藏输入。然而,我的查询并没有将该值更改为隐藏输入的值,我也不确定我的代码出了什么问题。这是我正在做的一件事 这是我的jquery,上面有一个计时器,因为原始文件加载js来填充某些输入值,包括我要更改的输入值,我需要等待它完成后再更改任何内容: setTimeout(function () { var firstName = $('#ShipBillInformation_txtShipToFirstName_NewH

我有一个表单生成了一个不正确的名字和姓氏。所以我用正确的名字和姓氏进行了隐藏输入。然而,我的查询并没有将该值更改为隐藏输入的值,我也不确定我的代码出了什么问题。这是我正在做的一件事

这是我的jquery,上面有一个计时器,因为原始文件加载js来填充某些输入值,包括我要更改的输入值,我需要等待它完成后再更改任何内容:

setTimeout(function () {
   var firstName = $('#ShipBillInformation_txtShipToFirstName_NewHTML').val();
   var lastName = $('#ShipBillInformation_txtShipToLastName_NewHTML').val();

   var hiddenFirstName = $('body').find('input[name="ShopperFirstName"]').val();
   var hiddenLastName = $('body').find('input[name="ShopperLastName"]').val();

   $(firstName).val($(hiddenFirstName).val());
   $(lastName).val($(hiddenLastName).val());
}, 1000);

也许你需要的是这个

setTimeout(function () {
   var firstName = $('#ShipBillInformation_txtShipToFirstName_NewHTML');
   var lastName = $('#ShipBillInformation_txtShipToLastName_NewHTML');

   var hiddenFirstName = $('body').find('input[name="ShopperFirstName"]').val();
   var hiddenLastName = $('body').find('input[name="ShopperLastName"]').val();

   firstName.val(hiddenFirstName);
   lastName.val(hiddenLastName);
}, 1000);

如果你仔细查看你的代码,很明显出了什么问题:
firstName
是输入的值
$(firstName)
不会给您元素的引用。这同样适用于所有其他变量

setTimeout(function () {

  // Convention: Store references to DOM elements in $...
  var $firstName = $('#ShipBillInformation_txtShipToFirstName_NewHTML');
  var $lastName = $('#ShipBillInformation_txtShipToLastName_NewHTML');

  // Convention: Store strings in normal variable names without $
  var hiddenFirstName = $('body').find('input[name="ShopperFirstName"]').val();
  var hiddenLastName = $('body').find('input[name="ShopperLastName"]').val();

  // Set the value of jQuery object to string
  $firstName.val(hiddenFirstName);
  $lastName.val(hiddenLastName);
}, 1000);
$(…)
只返回jQuery对象。因此,要设置该值,可以执行以下操作:

  • 将显示的
    元素存储在以
    $
    开头的变量中,即
    $firstName
    $lastName
    。这些是jQuery对象,您可以将其他jQuery函数链接到这些对象
  • 将隐藏的
    元素值(属于
    字符串
    类型)存储在不带
    $
    的变量中,即
    hiddenFirstName
    hiddenLastName
    。这些是而不是jQuery对象,将它们包装在
    $(…)
    中也不会起任何作用
  • 这些约定虽然不是一成不变的,但非常有用,因为当快速浏览代码时,您可以很容易地区分哪些变量引用jQuery对象,哪些只是普通的JS变量

    setTimeout(function () {
    
      // Convention: Store references to DOM elements in $...
      var $firstName = $('#ShipBillInformation_txtShipToFirstName_NewHTML');
      var $lastName = $('#ShipBillInformation_txtShipToLastName_NewHTML');
    
      // Convention: Store strings in normal variable names without $
      var hiddenFirstName = $('body').find('input[name="ShopperFirstName"]').val();
      var hiddenLastName = $('body').find('input[name="ShopperLastName"]').val();
    
      // Set the value of jQuery object to string
      $firstName.val(hiddenFirstName);
      $lastName.val(hiddenLastName);
    }, 1000);
    
    以下是一个概念验证示例:

    $(函数(){
    setTimeout(函数(){
    变量$firstName=$(“#船舶信息”\u txtShipToFirstName\u NewHTML”);
    var$lastName=$('shippillinformation\u txtShipToLastName\u NewHTML');
    var hiddenFirstName=$('body').find('input[name=“ShopperFirstName”]').val();
    var hiddenLastName=$('body').find('input[name=“ShopperLastName]”).val();
    $firstName.val(hiddenFirstName);
    $lastName.val(hiddenLastName);
    }, 1000);
    });
    
    
    名字:
    姓氏:

    hiddenFirstName
    是一个var而不是jQuery对象。尝试
    $(firstName).val(hiddenFirstName)完美!我不知道把$放在变量前面做了什么,谢谢!不,将
    $
    放在变量前面不会改变任何内容
    var$foo
    var foo
    没有区别。