jquery中的对象未在提交时设置
Posted
技术标签:
【中文标题】jquery中的对象未在提交时设置【英文标题】:Object in jquery not set on submit 【发布时间】:2020-02-17 09:01:40 【问题描述】:我想获取表单的输入值并将其放置在对象中(用于报价)。
所以我尝试将此代码放在提交上:
$(document).ready(function()
$('#formOffre').on('submit', function(e)
e.preventDefault();
console.log(Offre); // give undefined in console
if ( typeof Offre == 'undefined')
// if undefined, create object
var Offre =
BuyerID: 1, //I will handle this later
Total: 0,
OffreItem: [] //array with json objects
;
Offre.OffreItem.id = 0;
console.log("object created");
for (i=0; i > Offre.OffreItem.id ; i++)
Offre.OffreItem.modele = formOffre.modele.value;
Offre.OffreItem.longueur = formOffre.longueur.value;
Offre.OffreItem.hauteur = formOffre.hauteur.value;
Offre.OffreItem.qte = formOffre.qte.value;
Offre.OffreItem.rix = formOffre.prix.value;
console.log("getting parameters of inputs to offer");
else
//if object exists ony get informations of inputs
Offre.OffreItem.id = 0;
for (i=0; Offre.OffreItem.id < i; i++)
Offre.OffreItem.modele = formOffre.modele.value;
Offre.OffreItem.longueur = formOffre.longueur.value;
Offre.OffreItem.hauteur = formOffre.hauteur.value;
Offre.OffreItem.qte = formOffre.qte.value;
Offre.OffreItem.rix = formOffre.prix.value;
这是我的代码。当我第一次单击提交时,它会转到 if 语句并创建对象。但是当我再次点击时,我会通过 if 语句,就像未设置对象一样。
我放了一个控制台日志,并且在每种情况下对象都是未定义的。
有人能帮帮我吗?
谢谢
【问题讨论】:
如果您希望下次运行相同的函数时可以访问Offre
,则需要在函数范围之外定义它。
【参考方案1】:
您在定义它的范围之外检查 Offre。
enter coconsole.log(Offre); // give undefined in console
if ( typeof Offre == 'undefined')
// if undefined, create object
var Offre = //here is issue this should be above submit function
BuyerID: 1, //I will handle this later
Total: 0,
OffreItem: [] //array with json objects
;
还要确保您的页面保持状态。 为您创建了示例,请看一下。 here 希望这能解决您的问题。
Fiddle
【讨论】:
【参考方案2】:这里的问题是你在函数内部定义你的变量。
为了简化你的代码:
$('#formOffre').on('submit', function(e)
if ( typeof Offre == 'undefined')
var Offre = ; // This variable is only accessible inside this function
else
//
var Offre
将在函数范围内定义一个变量,下次运行该函数时,将创建一个具有该名称的新变量(意味着它最初始终为 undefined
)
要解决这个问题,您可以在函数之外定义变量:
var Offre;
$('#formOffre').on('submit', function(e)
if ( typeof Offre == 'undefined')
Offre = ; // Notice that we're not creating a new variable here, just accessing the one defined above
else
//
【讨论】:
0 感谢您的快速答复。但我遇到了同样的问题 @Daniel 你能在 sn-p 中显示你更新的代码吗?这应该有效,您是否从函数内部的Offre
中删除了var
?以上是关于jquery中的对象未在提交时设置的主要内容,如果未能解决你的问题,请参考以下文章