使用jquery的上一个表单项

使用jquery的上一个表单项,jquery,Jquery,我有一个表单项列表-一个名称和一个用于删除该项的复选框 <input value="www…" name="web[]" type="text" class="siteName"/> <input name="delete" type="checkbox" value="delete" class="delete"/> 我创建它是为了在这两个项目之间交换字段值,这样文本字段将被清空,但如果出现错误,值将存储在复选框中 <script type="text/ja

我有一个表单项列表-一个名称和一个用于删除该项的复选框

<input value="www…" name="web[]" type="text" class="siteName"/>
<input name="delete" type="checkbox" value="delete" class="delete"/>

我创建它是为了在这两个项目之间交换字段值,这样文本字段将被清空,但如果出现错误,值将存储在复选框中

<script type="text/javascript"> 
$(function () { 
    $('.delete').change(function(){
        var oldVal = $('.siteName').val();
        $('.siteName').val($(this).val());
        $(this).val(oldVal);
    });
});
</script>

$(函数(){
$('.delete').change(函数(){
var oldVal=$('.siteName').val();
$('.siteName').val($(this.val());
$(this.val)(oldVal);
});
});

如果有多组表单项都被更改,我是否可以将其设置为只有以前的“.siteName”表单项被更改(我尝试了.prev(),但没有使用如何正确使用它)。我可以很容易地创建脚本的多个实例并对类名进行编号,但我认为会有一个更优雅的解决方案。

是。
使用此参考和
prev()

或最近的()


closest()
如果siteName输入再次在复选框旁边启动,则可能无法为您提供正确的值。。因此,如果您确定前面的元素是输入类siteName,那么
prev()
更好。

是。.使用
引用和
prev()

$(function () { 
    $('.delete').change(function(){
        var $myPrevSiteName = $(this).prev('.siteName');
        var oldVal = $myPrevSiteName.val();
        $myPrevSiteName.val( this.value );
        $(this).val(oldVal);
    });
});
或最近的()


closest()
如果siteName输入再次在复选框旁边启动,则可能无法为您提供正确的值。。所以,如果您确定前面的元素是输入类siteName,那么
prev()
更好

我想我没有放弃理解您的问题,但让我试试看,您是否正在尝试实现类似的目标

$(function () { 
    $('.delete').change(function(){
        var $myPrevSiteName = $(this).prev('.siteName');
        var oldVal = $myPrevSiteName.val();
        $myPrevSiteName.val( this.value );
        $(this).val(oldVal);
    });
});


我没有使用prev(),而是将每个输入和复选框包装在一个父标记中,然后对其应用jquery代码,只做了一些小的更改。如果这不是你试图达到的目标,请向我提供更多信息

我想我不明白你的问题,但让我试试看,你是不是在试图实现这样的目标


我没有使用prev(),而是将每个输入和复选框包装在一个父标记中,然后对其应用jquery代码,只做了一些小的更改。如果这不是你试图达到的目标,请向我提供更多信息

谢谢-这几乎正是我尝试过的,但没有成功,但是正如你所说的一样,我坚持了下来,发现由于我将复选框包装在标签标签中,这使得脚本无法工作是出于某种原因…这是因为你之前的元素将是标签..并且将无法找到它的
val()
。。。不管怎样,很高兴你自己发现了。。。很高兴它有帮助…很高兴代码是我的脚本说.prev('.siteName'),所以认为它应该找到该类的前一个实例-觉得很奇怪。没关系。谢谢-这几乎正是我尝试过的,但没有成功的,但是正如你所说的,我坚持了下来,发现当我将复选框包装在标签标签中时,出于某种原因,它使脚本无法工作。是的…这是因为你之前的元素将是标签..并且将无法找到
val()
其中一项。。。不管怎样,很高兴你自己发现了。。。很高兴它有帮助…很高兴代码是我的脚本说.prev('.siteName'),所以认为它应该找到该类的前一个实例-觉得很奇怪。没关系。谢谢-这几乎正是我尝试过的,也没有成功的,但是正如你所说的一样,我坚持了下来,发现当我把复选框包装在标签标签上时-出于某种原因,它使脚本无法工作谢谢-这几乎正是我尝试过的,也没有成功的,然而,正如你所说的那样,我坚持了下来,发现当我将复选框包装在一个标签标签中时——出于某种原因,这使得脚本无法工作——这是一个很好的解决方案——其他人所做的工作在不久前就已经集成了。感谢这是一个很好的解决方案——其他人所做的工作在不久前就已经实现了整合。谢谢
$(function () { 
    $('.delete').change(function(){
        var $myPrevSiteName = $(this).prev('.siteName');
        var oldVal = $myPrevSiteName.val();
        $myPrevSiteName.val( this.value );
        $(this).val(oldVal);
    });
});