jQuery.each(values,function(i,v){...})为什么v未定义?

时间:2012-11-21 16:12:27

标签: javascript jquery asp.net

我有几个文本框需要在发回之前检查。我使用每个函数使用jQuery执行此操作。按下提交按钮(LinkBut​​ton1)后,我遍历文本框并检查它们的值:

<asp:textbox id="txt1" class="tocheck" runat="server />
<asp:textbox id="txt2" class="tocheck" runat="server />
<asp:textbox id="txt3" class="tocheck" runat="server />

$('#LinkButton1').click(function () {
    var error = false;
    $.each('.tocheck', function (i, v) {
        checkVal(v.val());
    });
});

但是抛出一个运行时错误,说v未定义:

enter image description here

如何检索文本框值?

谢谢。

6 个答案:

答案 0 :(得分:6)

您无需传入v - 将其删除。

然后使用$(this)代替。

$('#LinkButton1').click(function () {
    var error = false;
    $('.tocheck').each( function () {
        checkVal($(this).val());
    });
});

答案 1 :(得分:3)

问题是您没有正确传递集合。

$('#LinkButton1').click(function () {
    var error = false;
    $.each('.text', function (i, v) { // <-- you are passing in a STRING not a collection of elements
        checkVal(v.val());
    });
});

$('#LinkButton1').click(function () {
    var error = false;
    $.each($('.text'), function (i, v) {
        checkVal($(v).val());// <-- need to wrap in jQuery to use jQuery methods
    });
});

答案 2 :(得分:3)

你在类选择器中遇到错误。将其更改为

$(".tocheck").each(function(i, v){
    checkVal($(v).val());
})

答案 3 :(得分:2)

首先

$.each('.tocheck', function (i, v) {
        checkVal(v.val());
    });

应该是

$('.tocheck').each(function (i, v) {
        checkVal(v.value);
});

&#39;      /

 $.each( $('.tocheck'), function (i, v) {
            checkVal(v.value);
        });

其次 v 这里是 DOM对象,您正试图在其上使用 jQuery方法。这就是原因对于错误..

所以v.val()

应该是

v.value $(v).val(); this.value $(this).val();

答案 4 :(得分:1)

$.each函数主要用于值数组,如整数或字符串,这就是为什么v不是item而不是item。所以你应该使用每个jQuery数组,如下所示。

$(".tocheck").each(function (index, item)
{
   alert($(item).val());
});

答案 5 :(得分:0)

$('.tocheck').each( function () {
        checkVal($(this).val());
    });