Попытка получить доступ к некоторым значениям входных тегов с помощью Javascript / jQuery

#javascript #jquery

#javascript #jquery

Вопрос:

Я пытаюсь получить значения некоторых входных тегов для выполнения некоторой проверки перед продолжением. Моя форма находится внутри диалогового окна jQuery, в котором HTML динамически генерируется на основе количества элементов в массиве JSON, например —

 if (testDialog === null)
{
    myTestDialogContentDiv  = '<div id="TestDialog" style="padding-left: 0; top: 0px; left: 0px;">';
}

myTestDialogContentDiv  = '<div id="TestDialogWarning" class="ClockInner"></div>';
myTestDialogContentDiv  = '<div id="TestDialogText" class="ClockInner" style="position: relative;"></div>'; 
myTestDialogContentDiv  = '<div class="TestDialogTxt"></div>';
myTestDialogContentDiv  = '<form>'; //Start Form 
myTestDialogContentDiv  = '<p><b>Routing Out:</b></p>';

if (data.routesout.length > 1)
{   
    for(i=0;i<data.routesout.length;i  )
    {           
        myTestDialogContentDiv  = '<label for="route'   i   '">'   data.routesout[i].name   '(%)</label>';
        myTestDialogContentDiv  = '<input onkeypress="validateKeypress(event)" type="text" name="route'   i   '" id="route'   i   '" value="'   data.routesout[i].percent   '" maxlength="5" size="8" class="ui-widget-content ui-corner-all">';
        myTestDialogContentDiv  = '</br>'   
    }

}
else
{
    myTestDialogContentDiv  = '<label>'   data.routesout[0].name   '(%)</label>';
    myTestDialogContentDiv  = '<input type="text" name="route0" id="route0" disabled value="'   data.routesout[0].percent   '" maxlength="5" size="8" "class="ui-widget-content ui-corner-all">';
}
  

И это мой код для создания диалогового окна со встроенными в него данными формы вместе с моей проверкой «при отправке».

 TestDialog = $("#TestDialog");
TestDialog.dialog({
    title: data.name,
    resizable: true,
    closeOnEscape: true,
    zIndex: 1000,
    dialogClass: 'outerGlow hideCloseX testDialog',
    buttons: {
            "Save":function() {
                //Need to check that all the fields add up to EXACTLY 100%
                var total = 0;

                for(var i=0; i< data.routesout.length; i  )                     
                {
                    total  = ("#route"   i).val();
                }

                if (total !== 100)
                {
                    alert("NOT EQUAL TO 100!!!");
                }
                else
                {
                    //TODO - Add Requests to update objects

                    $(this).dialog("close");
                }
            },
            "Cancel": function() { $(this).dialog("close"); }
            }
});     
  

Я получаю сообщение об ошибке Jscript, в котором говорится об этом.val не существует для этого элемента, когда я пытаюсь использовать Jscripts own .value, я получаю NaN. Я думаю, это как-то связано с тем, что форма технически является дочерним узлом? Но, тем не менее, я в тупике, любая помощь была бы отличной.

Также игнорируйте любые орфографические ошибки или несоответствия в моем написании идентификаторов и т.д., Я быстро изменил его на Test для публикации.

Спасибо!

Ответ №1:

total = ("#route" i).val(); должно быть total = parseInt($("#route" i).val());

Комментарии:

1. Хороший улов. Поднимите руки, если вы делали это сами в прошлом, все.

2. Дох! Я только что заметил, что мне также нужно указать, что я использую целые числа, поскольку общее значение становится «0100»! Спасибо, чувак!

3. Вы должны проанализировать значение в int . Я обновлю свой ответ.