使用 jquery 将值赋给下一项

发布于 2024-10-08 17:24:35 字数 892 浏览 4 评论 0原文

我是 jquery 新手。 我正在更改输入文本的值,并且需要更改下一个输入文本的值,所以我的代码是:

$(document).ready(function() {   

$('[type=text]').change(function() {

        $(this).next('input').val("newvalue");
    });

});

但是什么都没有...!


编辑:从下面的评论中发布 HTML

<form method="post" action="/volume/create"> 
    <table> 
        <tr> 
            <th><label for="volume_h1">H1</label></th> 
            <td><input type="text" id="volume_h1" name="volume[h1]"></td> 
        </tr> 
        <!-- .............. to volume_h24 -->
        <tr> 
            <th><label for="volume_h24">H24</label></th>
            <td><input type="text" id="volume_h24" name="volume[h24]"></td> 
        </tr> 
    </table> 
</form>

I'm new with jquery.
I'm changing the value of an input text and I need to change the value of the next input text, so my code is :

$(document).ready(function() {   

$('[type=text]').change(function() {

        $(this).next('input').val("newvalue");
    });

});

But nothing... !


EDIT: Posting HTML from comment below

<form method="post" action="/volume/create"> 
    <table> 
        <tr> 
            <th><label for="volume_h1">H1</label></th> 
            <td><input type="text" id="volume_h1" name="volume[h1]"></td> 
        </tr> 
        <!-- .............. to volume_h24 -->
        <tr> 
            <th><label for="volume_h24">H24</label></th>
            <td><input type="text" id="volume_h24" name="volume[h24]"></td> 
        </tr> 
    </table> 
</form>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

南巷近海 2024-10-15 17:24:36

编辑:根据您提供的更新信息,这应该有效:

$('input[type=text]').change(function() {
    var inputs = $(this).closest('form').find('input:text');
    var nextIndex = inputs.index( this ) + 1;
    inputs.slice( nextIndex ).val( this.value );
});

原始解决方案:

如果没有看到您的标记,很难判断,但我猜您之间有一些元素两个。

$('input[type=text]').change(function() {
    $(this).nextAll('input:first').val("newvalue");
});

在没有看到您的 HTML 的情况下无法给出更多答案。

请注意,我将选择器从 '[type=text]' 更改为 'input[type=text]',这会更高效。

EDIT: Based on the updated information you provided, this should work:

$('input[type=text]').change(function() {
    var inputs = $(this).closest('form').find('input:text');
    var nextIndex = inputs.index( this ) + 1;
    inputs.slice( nextIndex ).val( this.value );
});

Original solution:

Hard to tell without seeing your markup, but I'm guessing you have some element in between the two.

$('input[type=text]').change(function() {
    $(this).nextAll('input:first').val("newvalue");
});

Can't give much more of an answer without seeing your HTML.

Note that I changed the selector from '[type=text]' to 'input[type=text]', which will be more efficient.

悲喜皆因你 2024-10-15 17:24:36

尝试方式:

$(this).attr('value',"newvalue");

Try By :

$(this).attr('value',"newvalue");
萌面超妹 2024-10-15 17:24:36

这将改变所有这些:

$("input:text").change(function() {
    var v = $(this).next("input:text");
    v.val($(this).val());
    v.trigger('change');
})

HTML:

<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">

http://jsfiddle.net/uDgnt/

This will change all of them down the line:

$("input:text").change(function() {
    var v = $(this).next("input:text");
    v.val($(this).val());
    v.trigger('change');
})

HTML:

<input type="text">
<input type="text">
<input type="text">
<input type="text">
<input type="text">

http://jsfiddle.net/uDgnt/

杯别 2024-10-15 17:24:36

我不知道为什么,你的解决方案似乎不错,但我没有成功使用 next() 函数。

最后我这样做了:

$('input[type=text]').change(function() {
       //get all the input text of the form
    var yourFormFields = $('#newform').find(':input[type=text]');
      // the index of my changed input
    $index = yourFormFields.index( this );
     //the value i entered
    $mavalue = $(this).val();

       $.each( yourFormFields, function(i, n){
    if(i>$index)
    {yourFormFields.eq(i).val($mavalue);}
         });

});

I don't know why, your solutions seemed to be good but i didn't suceed with the next() function.

Finally i did this :

$('input[type=text]').change(function() {
       //get all the input text of the form
    var yourFormFields = $('#newform').find(':input[type=text]');
      // the index of my changed input
    $index = yourFormFields.index( this );
     //the value i entered
    $mavalue = $(this).val();

       $.each( yourFormFields, function(i, n){
    if(i>$index)
    {yourFormFields.eq(i).val($mavalue);}
         });

});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文