2010-01-20 90 views
1

我已经写了一个HTML页面至极用了jQuery,但JavaScript执行在以下点停止检索值:JQuery的::从表单元素

alert($('[name=fAantalVakjes]').val()); 

这是相关的HTML标签:

<input type="hidden" value="1" id="fAantalVakjes" name="fAantalVakjes" /> 

有人可以帮我吗?

由于提前,

伊凡 编辑:全码:

function ValidateOnderzoeksRechter() { 
    var or1, or2, or3, totaalOR; 
    var blnReturn = true; 
    or1 = $('#fOnderzoeksrechter_1').attr('value'); 
    or2 = $('#fOnderzoeksrechter_2').attr('value'); 
    or3 = $('#fOnderzoeksrechter_3').attr('value'); 

    if ((or1.length == 2)) { 
     // ok 
     setColor('fOnderzoeksrechter_1',true); 
    } else { 
     // NOT OK 
     setColor('fOnderzoeksrechter_1',false); 
     blnReturn = false; 
    } 

    if ((or2.length <= 7) && (or2.length >= 1)) { 
     // ok 
     setColor('fOnderzoeksrechter_2',true); 
    } else { 
     // NOT OK 
     setColor('fOnderzoeksrechter_2',false); 
     blnReturn = false; 
    } 

    if ((or3.length == 2)) { 
     // ok 
     setColor('fOnderzoeksrechter_3',true); 
    } else { 
     // NOT OK 
     setColor('fOnderzoeksrechter_3',false); 
     blnReturn = false; 
    } 

    $('#fOnderzoeksrechter_1').val((or1.toUpperCase())); 
    $('#fOnderzoeksrechter_2').val((or2.toUpperCase())); 
    $('#fOnderzoeksrechter_3').val((or3.toUpperCase())); 

    if (blnReturn) { 
     //$('#message').html('Gelieve de rode vakjes te corrigeren.'); 
    } 

    return blnReturn; 
} 

function ValidateParketNr() { 
    var parket1, parket2, parket3, parket4, parket5, totaalParket; 
    parket1 = $('#fParket1').attr('value'); 
    parket2 = $('#fParket2').attr('value'); 
    parket3 = $('#fParket3').attr('value'); 
    parket4 = $('#fParket4').attr('value'); 
    parket5 = $('#fParket5').attr('value'); 



    var blnReturn; 
    blnReturn = true; 
    if ((parket1.length == 2)) { 
     // ok 
     setColor('fParket1',true); 
    } else { 
     // NOT OK 
     setColor('fParket1',false); 
     blnReturn = false; 
    } 
    if ((parket2.length == 2)) { 
     // ok 
     setColor('fParket2',true); 
    } else { 
     // NOT OK 
     setColor('fParket2',false); 
     blnReturn = false; 
    } 
    if ((parket3.length == 2)) { 
     // ok 
     setColor('fParket3',true); 
    } else { 
     // NOT OK 
     setColor('fParket3',false); 
     blnReturn = false; 
    } 
    if (IsNumeric(parket4) && (parket4.length) <= 7 && (parket4.length) >= 1) { 
     // ok 
     setColor('fParket4',true); 
    } else { 
     // NOT OK 
     setColor('fParket4',false); 
     blnReturn = false; 
    } 
    if (IsNumeric(parket5) && (parket5.length) == 2) { 
     // ok 
     setColor('fParket5',true); 
    } else { 
     // NOT OK 
     setColor('fParket5',false); 
     blnReturn = false; 
    } 



    $('#fParket1').val((parket1.toUpperCase())); 
    $('#fParket2').val((parket2.toUpperCase())); 
    $('#fParket3').val((parket3.toUpperCase())); 

    if (blnReturn) { 
     //$('#message').html('Gelieve de rode vakjes te corrigeren.'); 
    } 

    return blnReturn; 
} 

function IsNumeric(sText) 
{ 
    if (sText != null) { 

     var ValidChars = "."; 
     var IsNumber=true; 
     var Char; 
     for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
      { 
      IsNumber = false; 
      } 
      } 
     return IsNumber; 
    } else { 
     return false; 
    } 


} 

function setColor(naam ,blnOK) { 
    if(blnOK) { 
     $('#' + naam).css('background-color', '#00ff00'); 

    } else { 
     $('#' + naam).css('background-color', '#ff0000'); 
    } 
} 

function ValidateForm() { 

    var blnResult; 
    blnResult = true; 
    if(!orIsLeeg()) { 

     blnResult = ValidateOnderzoeksRechter(); 
    } 
    if (!ParketIsLeeg()) { 
     blnResult = ValidateParketNr(); 
    } 


    blnResult = ValideerRestVanFormulier(); 
    return blnResult; 
} 

function XOR(b1, b2) { 
    return (!b1 && b2) || (b1 && !b2); 
} 

function orIsLeeg() { 
    var ISLEEG; 
    ISLEEG = true; 
    for (var x = 0; x < 3; x++){ 
     if ($('#fOnderzoeksrechter_' + (x + 1)).val != '') { 
      ISLEEG = false; 
     } 
    } 
    return ISLEEG; 
} 

function ParketIsLeeg() { 
    var ISLEEG; 
    ISLEEG = true; 
    for (var x = 0; x < 5; x++){ 
     if ($('#fParket' + (x + 1)).val != '') { 
      ISLEEG = false; 
     } 
    } 
    return ISLEEG; 
} 

function ValideerRestVanFormulier() { 
    var ret, value; 
    ret = true; 
    ret = ValideerCijfer('fAantalMaatregelen'); 
    ret = ValideerCijfer('fAantalOnderzoeken'); 
    ret = ValideerCijfer('fAantalBetrokkenVerdachten'); 
    ret = ValideerCijfer('fAantalNuttig'); 


    for (var x = 0; x < AANTAL_VAKJES ; x++){ 
     ret = ValideerCijfer('fFeitAantal' + x); 
    } 

    return ret; 
} 

function ValideerCijfer(veld) { 
    try { 
     if (IsNumeric($("#" + veld).val()) && ($("#" + veld).val() != '')) { 
      setColor(veld, true); 
      return true; 
     } else { 
      setColor(veld, false); 
      return false; 
     } 
    } catch (ex) { 
     alert(ex); 
    } 
} 

函数从该元件称为:

<input type="text" onchange="ValideerRestVanFormulier()" value="" name="fFeitAantal0" /> 

下面的代码输出 'STEXT未定义':

function ValideerCijfer(veld) { 
    try { 
     if (IsNumeric($("#" + veld).val()) && ($("#" + veld).val() != '')) { 
      setColor(veld, true); 
      return true; 
     } else { 
      setColor(veld, false); 
      return false; 
     } 
    } catch (ex) { 
     alert(ex); 
    } 
} 

见上面IsNumeric函数...

这里的函数名(他们是荷兰) ValideerCijfer = validateNumber的一个简短的说明 - 使用>函数来检查它是否是一个有效的数字。

+2

你的表达*应该*工作。你有没有在'$(document).ready(...'block?)中包含该行? – karim79 2010-01-20 12:10:04

+0

不是完整的代码?我得到“IsNumeric没有定义” – 2010-01-20 12:20:39

+0

对不起,忘了复制那个... – friedkiwi 2010-01-20 12:22:05

回答

0

找到自己的问题:我忘了指定的ID给fAantalVakjes场...

感谢您的帮助!

Yvan

0

难道你不能使用Id选择器吗?

$('#fAantalVakjes').val() 

或者使用该名称:

$('[name="fAantalVakjes"]').val() 

..fredrik

+0

不,不行... 试过 var value; value(); $('#fAantalVakjes')。val(); //卡在这里 alert(value); 它陷入了第二条规则。我使用FireBug扩展来确定。 – friedkiwi 2010-01-20 12:14:03

0

由于卡里姆在他的评论中指出,该问题可能是之前的DOM完全加载执行代码。通常,大多数jQuery代码都放在$(document).ready()回调中,以确保DOM在执行时可用。例如:

$(document).ready(function() { 
    alert($('[name=fAantalVakjes]').val()); 
}); 

正如弗雷德里克提到了他的答案,你可能要考虑使用<input>元素的id属性,而不是,因为它提供了更方便(通常更可靠)的选择:

$(document).ready(function() { 
    alert($('#fAantalVakjes').val()); 
}); 
+0

这不是我所需要的...我已经添加了额外的信息:) – friedkiwi 2010-01-20 12:18:08

+0

虽然此代码确实有效,但我无法对它做任何事情。 我知道这个页面是成功加载的,因为这个函数是在你输入了一些东西之后调用的。 – friedkiwi 2010-01-20 12:26:35

0

这似乎是显而易见的,但你的输入代码在HTML有一个封闭</input>

尝试改变

value = $('[name="fAantalVakjes"]').val(); 

value = $('input[name="fAantalVakjes"]').val(); 

编辑:OH,也使用ID而不是速度,我没有包括,因为我不知道你的情况下休息。编辑2:只有一个其他的想法,我不太喜欢“价值”的名字。我会否则更改为类似:

myvalue = $('input[name="fAantalVakjes"]').val(); 
alert(myvalue); 
+0

这是从调试器复制的,真正的标签有它 – friedkiwi 2010-01-20 12:19:00