0

私は問題があります。複数の行を動的に作成できます。各行には2があり<td>ます。それぞれ<td>にクラスがtdDebitあり、tdCredit

<table id="tblAcctForm">
 <tr>
  <td class="tdDebit"><input type="text" /></td>
  <td class="tdCredit"><input type="text" /></td>
 </tr>
</table>

私がしたいのは、<td>withクラス内の入力に入力すると、同じ行の他の入力が無効になるということですtdDebit。withクラスtdCredit内の入力に何かを入力するか、すべての入力が無効になるとどうなりますか。入力したのと同じ行にのみ入力が必要です。<td>tdDebittdCredit

$(document).ready(function () {
  $("tr .tdDebit input").live("keyup", function()  {
    checkContent(this, "tr .tdCredit input");
  });

  $("tr .tdCredit input").live("keyup", function()  {
    checkContent(this, "tr .tdDebit input");
  });
});

function checkContent (activeElem, otherElem) {
  if ($.trim($(activeElem).val()) != "")
    $(otherElem).attr("disabled", "disabled");
   else
    $(otherElem).removeAttr("disabled");
}

ここで私の作業コードを参照してください:http://jsfiddle.net/pcmwg/

PS:テストする前に複数の行を作成してください。

助けてください。前もって感謝します。

4

3 に答える 3

1

これでうまくいきます。2番目の引数はもう必要ありません

function checkContent (activeElem, otherElem) {
    var $input=$(activeElem), $otherInput=$input.parent().next().find('input');
        if ($.trim($input.val()) != "")
            $otherInput.attr("disabled", "disabled");
        else
           $otherInput.removeAttr("disabled");
}

デモ:http://jsfiddle.net/pcmwg/1/

于 2012-12-31T03:06:08.367 に答える
1

パラメータに渡す値otherElemは一般的すぎます。ページ上のすべてのtr内のすべての.tdDebit/.tdCredit内のすべての入力を選択します。

代わりに、入力要素に関連する直接値を渡します。

$(document).ready(function () {
  $("tr .tdDebit input").live("keyup", function()  {
    var toDisable = $(this).closest('tr').find('.tdCredit input');
    checkContent(this, toDisable);
  });

  $("tr .tdCredit input").live("keyup", function()  {
    var toDisable = $(this).closest('tr').find('.tdDebit input');
    checkContent(this, toDisable);
  });
});

さらに良いことに、それをより一般的にします:

$(document).ready(function () {
    $("tr input").live("keyup", function()  {
    var toDisable = $(this).closest('tr').find('input').not(this);
    checkContent(this, toDisable);
  });
});

http://jsfiddle.net/7jdfM/1/

于 2012-12-31T02:58:31.073 に答える
1
checkContent(this, $(this).siblings(".tdCredit input"));
checkContent(this, $(this).siblings(".tdDebit input"));
于 2012-12-31T02:58:54.897 に答える