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