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中的对象未在提交时设置的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 中的 .load 未在 IE6 中加载 cfcharts

显示键盘时未在移动设备中触发提交事件

热点未在产品查看器中链接

JQuery——常用插件

jquery使用FormData提交数据

AWS CodePipeline github webhook 未在提交时触发