Объект в jquery не установлен при отправке - PullRequest
0 голосов
/ 21 октября 2019

Я хотел бы получить входные значения формы и места в объекте (для предложения).

Поэтому я попытался поместить этот код в submit:

$(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;
            }
        }

thisмой кодкогда я нажимаю на submit впервые, он переходит к оператору if и создает объект. Но когда я нажимаю еще раз, я выполняю оператор if, как будто объект не установлен.

Я ставлю консольный журнал, и в каждом случае объект не определен.

Можете ли вы мне помочь? пожалуйста?

Спасибо

Ответы [ 2 ]

0 голосов
/ 21 октября 2019

Вы проверяете 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
        };

Также убедитесь, что ваша страница поддерживает состояние. Для тебя я создал пример, посмотри. здесь Надеясь, что это решит вашу проблему.

Fiddle

0 голосов
/ 21 октября 2019

Проблема в том, что вы определяете свою переменную внутри функции.

Чтобы упростить ваш код:

$('#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 {
    //
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...