0

そのdivをクリックすると、divの場所に入力ボックスをロードしようとしています。使用しているJqueryはChromeで正常に動作しますが、Firefoxに来ると、1回、2回、3回のクリック後に異なる結果が表示されます:
ここに画像の説明を入力

これが私が使用しているJqueryです:

$(function(){
  $('#right').on('click', '.stock.mini-counts', function(){
    var $p = $(this);
    var old = $p.html();

    if(/<input type="text"/.test(old))
      return;

    $p.html('<input type="text" value="' + old + '"/>')
       .find('input')
       .focus()
       .on('blur', function(){
         var value = this.value;
         $.post('listener_updates.php', {stock: value})
          .done(function(){
            $p.html(value);
          })
          .fail(function(){
            $p.html(old);
            alert('Could not update title');
          });
       });
  });
});

HTML :

<div class="status"><div class="stock mini-counts">7</div><div>available</div></div>

ご協力ありがとうございました

4

2 に答える 2

0

これは、Firefox が type 属性の前に value 属性を追加するため、正規表現が一致しないためです。

コードを変更してみてください:

$(function () {
    $('#right').on('click', '.stock.mini-counts', function(){
        var $p = $(this);
        var old = $p.html();

        if (/<input /.test(old)) return;
        $p.html('<input type="text" value="' + old + '"/>')
            .find('input')
            .focus()
            .on('blur', function () {
            var value = this.value;
            $p.html(value);

        });
    });
});

デモ: http://jsfiddle.net/IrvinDominin/aAAh8/

于 2013-10-18T11:23:30.923 に答える
0

test()それを単に置き換えることができるのに、なぜその関数を使用するのですか

if( $(this).find('input').length > 0 ) return false;

これにより、このようなエラーが防止され、入力がブラウザ間で存在するかどうかがチェックされます。

于 2013-10-18T11:29:07.813 に答える