1

当文档加载到我的单选按钮时,我试图让 jQuery 绑定一个 onClick 函数。

ASP 返回数据库并找到所有打开的标记,然后它使用原始 HTML 向页面发送响应,以制作单选按钮和标记的图像。我需要做的是让 jQuery(或与此相关的任何东西)绑定一个 onClick,它会发出点击的信号,以便我可以将该 markerId 发送回数据库以将其附加到一个人。

这是迄今为止我尝试过的粗略的jsFiddle 。在调试中,我在每个函数中添加了警报,我看到它们是我应该看到的 3 倍,但attr('id')返回未定义。

这是将单选按钮放在表单上的 html

            <br />
            <p>Select open marker for new user:
            <% getMarkers(); %>
            </p>

这是该调用的代码隐藏

        while (reader.Read())
        {
            if (readIndex % 3 == 0)
                markerTable += "<tr>";

            string markerId = reader["marker_id"].ToString();
            string fileName = reader["marker_filename"].ToString();

            markerTable += "<td><input type=\"radio\" name=\"openMarker\" value=\"" + markerId + "\" " +
                "id=\"oMrk" + markerId + "\"><label for=\"oMrk" + markerId + "\"><img src=\"/Markers/" +
                fileName + "\" /></label></input></td>";

            readIndex++;

            if (readIndex % 3 == 0)
                markerTable += "</tr>";

        }

        if (readIndex % 3 != 0)
            markerTable += "</tr>";

        markerTable += "</table>";
    }
    else
        markerTable = "<p>No empty markers. Please delete a user to continue.</p>";
    
    sCon.Close();
    return markerTable;

我发布的小提琴有从这个函数粘贴到它的源代码。

我有两个问题。

  1. 为什么这不起作用?似乎应该,我从我的 jQuery 选择器语句中获取了 3 个元素,它是从$(document).ready()为什么未定义属性中调用的?
  2. 有一个更好的方法吗?我计划将该值放入页面变量中,然后使用 ASP 按钮将其发送回服务器到存储过程,以将该标记与来自另一个字段的一些文本添加回数据库。我意识到我可以将 onClick 事件添加到响应 html 中,但是我需要了解为什么我正在做的事情不起作用。

我对网络很陌生,所以如果我在程序上离题,我愿意接受建议。

4

3 回答 3

1

关联

$(document).ready(function () {
    $('input:radio').each(function (radElem) {
        var radId = $(this).attr('id');
        alert(radId);

    });

     $('input:radio').on('click', function () {
            alert('Clicked');
        });
});
于 2013-03-21T12:49:43.847 回答
0
$(document).ready(function () {
    $('input:radio').on('click', function() {
        alert($(this).attr('id'));
    });
});

您是否需要在停留在页面上时将值发送到服务器?(通过阿贾克斯)

还是您需要将表格发布到另一个页面?

于 2013-03-21T12:53:32.617 回答
0
  1. 它不起作用,因为您正在尝试绑定onClick而不是仅仅click
  2. 其他答案为您提供了 jQuery。在每个你只需要使用this关键字

我在小提琴中对此进行了测试,它有效。其他人也提供了类似的答案,但无论如何,这就是小提琴:THE FIDDLE

$(document).ready(function () {
    $("input:radio").each(function () {
        var radId = $(this).attr('id');
        alert(radId);
        $(this).on('click', function () {
            alert('Clicked');
        });
    });
});

至于更好的方法来做你想要完成的事情,我对你真正想要做的事情没有把握,对不起。虽然感觉就像您最初应该在 asp.net 中填充它一样,但是您的页面的约束可能无法实现。我不能说。

另外,继续选择以前的答案之一,我只是想向您解释为什么您所拥有的东西不起作用。

于 2013-03-21T13:09:13.370 回答