我正在尝试获取某些输入标记的值,以便在继续之前进行一些验证。我的表单位于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自己时.value我得到一个NaN。我认为这与技术上作为子节点的表单有关?但是,我很难过,任何帮助都会很棒。
同时忽略我的ids等拼写中的任何拼写错误或不一致,我很快将其更改为Test for posting。
谢谢!
答案 0 :(得分:2)
total += ("#route" + i).val();
应为total += parseInt($("#route" + i).val());