JQuery ::从表单元素中检索值

时间:2010-01-20 12:04:46

标签: jquery html tags hidden

我写过一个使用jquery的html页面,但javascript执行在以下几点停止:

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 = "0123456789.";
       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 undefined':

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 - &gt;用于检查它是否为有效数字的函数。

4 个答案:

答案 0 :(得分:0)

您不能使用Id选择器吗?

$('#fAantalVakjes').val()

或使用名称:

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

..弗雷德里克

答案 1 :(得分:0)

正如Karim在评论中指出的那样,问题可能是您的代码在DOM完全加载之前执行。通常,大多数jQuery代码都放在$(document).ready()回调中,确保DOM在执行时可用。例如:

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

正如Fredrik在回答中提到的那样,您可能需要考虑使用id元素的<input>属性,因为它提供了更简单(通常更可靠)的选择:

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

答案 2 :(得分:0)

这可能很明显,但你的输入标签在HTML </input>

中有一个闭包

尝试更改

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

 value = $('input[name="fAantalVakjes"]').val();
编辑:OH,并且DO使用ID来代替速度,我没有包含它,因为我不知道你的其他情况。

EDIT2:只是另外一个想法,我真的不喜欢“价值”这个名字。我会把它改成其他类似的东西:

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

答案 3 :(得分:0)

自己发现问题:我忘了为fAantalVakjes字段指定ID ...

感谢您的帮助!

伊凡