【问题标题】:Problèm with incrémentation on JqueryJquery 上的增量问题
【发布时间】:2014-05-13 11:43:03
【问题描述】:

我有一个选择

    <select class="situation">
 <optgroup label="Situation">
  <option value="1">Married</option>
  <option value="2">Divorced</option>
  <option value="3">single</option>
</optgroup>
</select>

当用户选择一个选项时,属性名称的第一个索引的值是情境的id,第二个是页面上的位置。

$('.situation').on('change', function(){
    var inputSituation = $( "input.situation" );
    var s = 0;

$( "input.situation" ).each(function() {

            if ($('select.toto option:selected').text() == 'Married'){

                $(this).attr('name', 'situation[2][' + s + ']');
                $(this).attr('name', 'statut[2][' + s + ']');

            }else if($('select.toto option:selected').text() == 'Divorced'){

               $(this).attr('name', 'situation[1][' + s + ']');
               $(this).attr('name', 'statut[1][' + s + ']');

            }/*...*/

        });
       s += 1; 
});

我的意见

<div>
<input type="checkbox" name="situation[1][0]" >
<input type="hidden" name="statut[1][0]" >
</div>

第二个索引的值,输入时必须相同,属性为'name' status和'statut'。

必须这样做:

<div>
<input type="checkbox" name="situation[1][0]" >
<input type="hidden" name="statut[1][0]" >
</div>

<div>
<input type="checkbox" name="situation[1][1]" >
<input type="hidden" name="statut[1][1]" >
</div>

但是,结果是:

<div>
<input type="checkbox" name="situation[1][1]" >
<input type="hidden" name="statut[1][2]" >
</div>

<div>
<input type="checkbox" name="situation[1][3]" >
<input type="hidden" name="statut[1][4]" >
</div>

【问题讨论】:

  • 尝试在您的情况下增加s。并且放个jsFiddle会更容易调试。

标签: jquery input jquery-selectors attributes each


【解决方案1】:

试试这样的:

Javascript

$('.situation').on('change', function(){
    var inputSituation = $( "input.situation" );
    var s = 0;

$( "input.situation" ).each(function() {

            if ($('select.toto option:selected').text() == 'Married'){

                $(this).attr('name', 'situation[2][' + s + ']');
                $(this).attr('name', 'statut[2][' + s + ']');
                s += 1; 
            }else if($('select.toto option:selected').text() == 'Divorced'){

               $(this).attr('name', 'situation[1][' + s + ']');
               $(this).attr('name', 'statut[1][' + s + ']');
               s += 1; 
            }/*...*/

        });

});

因为如果我明白你不想在每个循环中增加 s ,但只有在其中一个条件为真时才增加。

【讨论】:

  • 我试试这个,但结果是这样的:
  • 能否提供一个jsFiddle。
猜你喜欢
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多