如何在单击按钮时获取选择文本,表格单元格值

时间:2015-10-04 18:13:22

标签: javascript jquery html

首先,我是html和javascript的新手,所以请放轻松:)

我有一个html表,其中每一行都有一个下拉列表(带有相同的选项)和一个按钮。单击按钮时,我想将下拉列表中所选项目的文本与另一个字符串一起传递给控制器​​。

到目前为止我已经

        <table>
            <tr>
                <td>First name</td>
                <td>Surname</td>
            </tr>
            @foreach (var row in Model.Rows)
            {
                <tr>
                    <td>@row.FirstName</td>
                    <td>
                        <select id="surnames">
                            @foreach (var name in Model.Surnames)
                            {
                                <option value=@name.ToString()>@name.ToString()</option>
                            }
                        </select>
                    </td>
                    <td><input type="button" id="myButton" value="Go" onclick="location.href='@Url.Action("MyAction", "MyController", new { @firstName = row.FirstName, @newSurname = ??? })'" /></td>
                </tr>
            }
        </table>

        <script>
            function getSelectedVersion() {
                var version = document.getElementById("surnames").text;
            }
        </script>

显然,这是我的代码的修剪和修改版本。实际上,我在模型的每一行中都有更多属性。

根据我的理解,我目前有一个ID问题,因为对于所有行,我对select具有相同的id。除了为每一行添加一个脚本之外,我想不出这个方法,它会起作用(我认为)但是不够优雅(表格的每一行中的foreach,然后表格之外的一个标签来分配脚本到每一行的下拉列表)

最重要的是,我错过了调用我的脚本获取文本的位,然后在按钮单击时将其传递给控制器​​。

理想情况下,我想将整个行对象传递给控制器​​,但我现在有一个解决方法,只需要字符串firstName。

模型中只有一个Names集合(而不是模型中每一行中的一个)用于表中的每一行,因为每个表的选项始终相同。

2 个答案:

答案 0 :(得分:1)

在html代码的顶部包含jQuery

<script src="https://code.jquery.com/jquery-1.10.2.js"></script>

然后在代码的底部添加以下代码:

<script>
  $("input[type=button]").on("click", function(){ 
  var FIRSTNAME  = ($(this).parent().prev().prev()).html(); 
  //alert(FIRSTNAME);
  var   NEWSURNAME  = ($(this).parent().prev().children().attr("selected", "selected")).val(); 
  //alert(NEWSURNAME);
  $.post("/MyController/MyAction", { firstName: FIRSTNAME, newSurname: NEWSURNAME } );  
});
</script>

答案 1 :(得分:0)

可能是这样的吗?

def letProb( c ):
    """ if c is an alphabetic character,
    we return its monogram probability (for english),
    otherwise we return 1.0 We ignore capitalization.
    Adapted from
    http://www.math.cornell.edu/~mec/2003-2004/cryptography/subs/frequencies.html
    """
    if c == 'e' or c == 'E': return 0.1202
    if c == 't' or c == 'T': return 0.0910
    if c == 'a' or c == 'A': return 0.0812
    if c == 'o' or c == 'O': return 0.0768
    if c == 'i' or c == 'I': return 0.0731
    if c == 'n' or c == 'N': return 0.0695
    if c == 's' or c == 'S': return 0.0628
    if c == 'r' or c == 'R': return 0.0602
    if c == 'h' or c == 'H': return 0.0592
    if c == 'd' or c == 'D': return 0.0432
    if c == 'l' or c == 'L': return 0.0398
    if c == 'u' or c == 'U': return 0.0288
    if c == 'c' or c == 'C': return 0.0271
    if c == 'm' or c == 'M': return 0.0261
    if c == 'f' or c == 'F': return 0.0230
    if c == 'y' or c == 'Y': return 0.0211
    if c == 'w' or c == 'W': return 0.0209
    if c == 'g' or c == 'G': return 0.0203
    if c == 'p' or c == 'P': return 0.0182
    if c == 'b' or c == 'B': return 0.0149
    if c == 'v' or c == 'V': return 0.0111
    if c == 'k' or c == 'K': return 0.0069
    if c == 'x' or c == 'X': return 0.0017
    if c == 'q' or c == 'Q': return 0.0011
    if c == 'j' or c == 'J': return 0.0010
    if c == 'z' or c == 'Z': return 0.0007
    return 1.0