jQuery事件绑定问题与单选按钮

时间:2013-03-21 12:47:30

标签: c# jquery asp.net

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

ASP回到数据库并查找所有打开的标记,然后它使用原始HTML发送对页面的响应,以生成单选按钮和标记的图像。我需要做的是让jQuery(或其他任何东西)绑定一个onClick,它会发出一个单击的信号,这样我就可以将该markerId发送回数据库,将它附加给一个人。

这是迄今为止我尝试过的粗略jsFiddle。在调试中,我在每个函数中添加了警报,我看到它们就像我应该的那样,但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中,但是我需要理解为什么我正在做的事情不起作用。
  3. 我对网络很陌生,所以如果我在程序上偏离标记,我愿意接受建议。

3 个答案:

答案 0 :(得分:1)

LINK

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

    });

     $('input:radio').on('click', function () {
            alert('Clicked');
        });
});

答案 1 :(得分:0)

$(document).ready(function () {
    $('input:radio').on('click', function() {
        alert($(this).attr('id'));
    });
});

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

或者您是否需要将表单发布到另一页?

答案 2 :(得分:0)

  1. 它不起作用,因为您试图绑定onClick而不是。{ 只是click
  2. 其他答案为您提供了jQuery。在每个你 只需使用this关键字
  3. 我用小提琴测试了它,它有效。其他人提供了类似的答案,但无论如何这里都是小提琴:THE FIDDLE

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

    至于一个更好的方法来做你想要完成的事情,我并没有牢牢掌握你想要做的事情,对不起。但感觉就像你最初应该在asp.net中填充它一样,但是页面的限制可能无法实现这一点。我不能说。

    另外,请继续选择之前的答案之一,我只想向您解释为什么您的工作无效。