JQuery获取点击事件中输入框的值

JQuery Getting Value of Input Box in On Click Event

本文关键字:输入 事件 获取 JQuery      更新时间:2023-09-26

关于这个主题还有很多其他线程,但没有一个能解决我的问题。我正试图从刚刚插入的输入字段中获取值。我使用以下javascript行插入我的输入框:

processName.innerHTML = '<input type="text" id="ProcessNameChange" value="' + oldName + '" >';`

然后我尝试使用访问它

var newName = $(this).closest("#ProcessNameChange").val(); 

这两者都封装在一个事件中,即按钮单击事件。如果你喜欢的话,下面是整个函数。此外,如果你有更好的方法来编码我写的任何东西,请随时分享。

$('.Edit').click(function () {
            if ($(this).attr("id") != "submitUpdate") {
                $(this).attr("id", "submitUpdate");
                $(this).text("Submit");
                var closestTR = $(this).closest("tr");
                var processName = closestTR.children()[2];
                var processDescription = closestTR.children()[3];
                var processID = closestTR.children()[4];
                var oldName = processName.innerHTML;
                var oldDesc = processDescription.innerHTML;
                processName.innerHTML = '<input type="text" id="ProcessNameChange" value="' + oldName + '" >';
                processDescription.innerHTML = '<input type="text" id="ProcessDescChange" value="' + oldDesc + '" > ';
                submitButtonClick();
            } else {
                var newName = $(this).closest("#ProcessNameChange").val(); 
                var newDesc = $(this).closest("#ProcessDescChange").val();
                var processID = $(this).closest("tr").children()[4];
            }

-->与评论相关:输入框的HTML始终保持如下所示:它都是通过中继器生成的,而不是用javascript修改的。

<tr>
<td class="grid-main-detail"></td>
    <td>
        <input id="ProcessNameChange" type="text" value="PNameOld">
    </td>
    <td>
        <input id="ProcessDescChange" type="text" value="PDescOld">
    </td>
    <td>
    <td>3547556300824952452</td>
    <td>Me </td>
    <td>7/19/2013 2:32:48 PM</td>   
</tr>

谢谢!

您错误地使用了最近的选择器

看看这个小提琴

http://jsfiddle.net/Td6Wx/3/

<div class="test"></div>
<a href="#" class="test2">asdasdas</a>

closest()(http://api.jquery.com/closest)在您的情况下,通过它的ANCESTORS向上传播。Edit不是输入的子级,所以它当然不起作用。如果您发布您的html结构,我们可能会提供正确的解决方案

一个问题:为什么要访问这样的输入值

var newName = $(this).closest("#ProcessNameChange").val(); 

而不是:

var newName = $("#ProcessNameChange").val(); 

由于该项是唯一的(由于其id属性),我认为不需要使用.closest()来获取它(及其值)。

您真的需要以这种方式选择输入字段吗?

我建议去掉innerHTML,专注于创建元素的jQuery方法,如.append()$()。此外,我想你正在寻找td tr的孩子。

var oldName = processName.text();
var oldDesc = processDescription.text();
processName.append($('<input type="text" id="ProcessNameChange" value="' + oldName + '" >'));
processDescription.append($('<input type="text" id="ProcessDescChange" value="' + oldDesc + '" > '));

希望这能有所帮助,

R。