1

日付を含む 2 つの入力フィールド間の日数の差を表示しようとしています。HTMLを変更することはほとんどできないので、Javascriptでこれを行う必要があります。HTMLはかなり醜いです。jQuery 1.3.2 しか使えません。

HTML:

<div id="longUnreadableUnidentifiableId">
  <div class="dynamic">
    <div class="row">
      <span class="column">
        <input id="horribleHorribleLongIdTxtFrom" type="text">11/02/2002</input>
      </span>
      <span class="colum">
        <input id="horribleHorribleLongIdTxtUntil" type="text">16/12/2010</input>
      </span>
      <div class="diff"> [diff] </div>
    </div>
  </div>

<div id="longUnreadableUnidentifiableId2">
  <div class="dynamic">
    <div class="row">
      <span class="column">
        <input id="horribleHorribleLongIdTxtFrom" type="text">03/03/2003</input>
      </span>
      <span class="colum">
        <input id="horribleHorribleLongIdTxtUntil" type="text">16/12/2010</input>
      </span>
      <div class="diff"> [diff] </div>
    </div>
  </div>

特定の行の日付のいずれかが変更されると、それらの違いが表示されます。日付の差分に moment.js を使用しています。

次の JavaScript は、関連する入力フィールドを見つけて、それらの違いを警告しようとします。しかし、2 番目の入力フィールド (var until) を見つけるのに苦労しています。

Javascript:

$('input[id*="txtFrom"]').live('change', function() { 
    var from = $(this);
    var until = from.parent(".row").find('input[id*="txtUntil"]');

    a = moment(from.val());
    b = moment(until.val());

    alert(b.diff(a, 'days'));
});

誰かがこの問題の解決策を持っていますか? おそらくもっとエレガントなものですか?

4

2 に答える 2

1

いくつかの提案:

  1. HTML構文を修正し、使用してください

    <input id="horribleHorribleLongIdTxtFrom" type="text" value="11/02/2002"></input>
    

    それ以外の

    <input id="horribleHorribleLongIdTxtFrom" type="text">11/02/2002</input>
    
  2. 要素 IDhorribleHorribleLongIdTxtFromが同じページに 2 回表示されている場合、html ルールに違反しています。
于 2013-07-17T10:52:37.417 に答える