繁体   English   中英

jQuery的click事件无法获取输入值

[英]Can't get input value with click event with jquery

我正在动态创建一个包含一些动态生成的按钮的表。 在使用POST之前,我已经做过同样的事情,并且可以正常工作。 现在,我正在使用AJAX,因此我需要通过click事件获取隐藏form元素的值。 但是,它总是给我第一个值(第一行/表格)。

以下是精简代码的示例。

每个按钮是否必须使用不同的名称? 如果是这样,我如何将所有这些绑定到click事件?

<pre><code>
<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript" src="assets/js/jquery.min.js"></script>
        <script type="text/javascript" charset="utf-8">

            $(document).ready(function () {
                $(document).on("click", "input[name='vsu']", function(event){
                    console.log('sliste'+$("input[name='sliste']").val());  
                    event.preventDefault();
                });                     
            });
        </script>
    </head>

    <body>
        <table id="slist"> 
            <tbody>
                <tr>
                    <td>user1</td>  
                    <td>
                        <form>
                            <input type="hidden" name="sliste" value="1">
                            <input name="vsu1" type="submit" value="view">
                        </form>
                    </td>        
                 </tr>
                 <tr>
                    <td>user2</td>  
                    <td>
                        <form>
                            <input type="hidden" name="sliste" value="2">
                            <input name="vsu2" type="submit" value="view">
                        </form>
                    </td>        
                </tr>    
            </tbody>
        </table>
    </body>
</html>
</pre></code>

您需要找到输入元素,它是单击按钮的上一个兄弟元素,因此

$(document).ready(function () {
    $(document).on("click", "input[name='vsu']", function (event) {
        console.log('sliste' + $(this).prev("input[name='sliste']").val());
        event.preventDefault();
    });
});

当使用$("input[name='sliste']")作为选择器时,它将找到具有给定名称的所有输入元素,然后当您使用.val()作为获取器时,它将返回第一个元素的值在给定的元素集中。

 $(document).ready(function() { $(document).on("click", "input[name='vsu']", function(event) { console.log('sliste' + $(this).prev("input[name='sliste']").val()); event.preventDefault(); }); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> <table id="slist"> <tbody> <tr> <td>user1</td> <td> <form> <input type="hidden" name="sliste" value="1"> <!-- changed the button type since the code snippet does not allow submit requests--> <input name="vsu" type="button" value="view"> </form> </td> </tr> <tr> <td>user2</td> <td> <form> <input type="hidden" name="sliste" value="2"> <input name="vsu" type="button" value="view"> </form> </td> </tr> </tbody> </table> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM