0

关于这个主题还有很多其他线程,但没有一个能解决我的问题。我正在尝试从我刚刚插入的输入字段中获取值。我使用这行 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>

谢谢!

4

3 回答 3

2

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

看到这个小提琴

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

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

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

于 2013-07-25T19:26:00.813 回答
1

一个问题:您为什么要访问输入的值,例如

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

代替:

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

?

由于该项目是独一无二的(凭借其id属性),我认为没有必要使用.closest()它来获取它(及其价值)。

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

于 2013-07-25T19:41:31.120 回答
0

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

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。

于 2013-07-25T19:40:45.127 回答