单击使用jQuery选择文本

时间:2013-10-04 08:48:17

标签: javascript jquery firefox

我想修复Firefox中的以下问题

当我尝试使用双击鼠标选择文本框内的文本时,它不选择文本,光标移动到文本的开头。任何想法如何解决这个问题?但这在googlechrome中工作正常

当您尝试编辑无法选择价值的价格列时,我尝试了以下http://www.iwebux.com/demos/ajax/此链接中的以下内容。谢谢。

我的代码:

 $(document).ready(function () {
     $('td.edit').click(function () {
         $('.ajax').html($('.ajax input').val());
         $('.ajax').removeClass('ajax');

         $(this).addClass('ajax');
         $(this).html('<input id="editbox"  size="' + $(this).text().length + '" type="text" value="' + $(this).text() + '">');

         $('#editbox ').focus();
     });

     $('td.edit').keydown(function (event) {
         arr = $(this).attr('class').split(" ");
         if (event.which == 13) {
             $.ajax({
                 type: "POST",
                 url: "supplierprice/config.php",
                 data: "value=" + $('.ajax input').val() + "&rowid=" + arr[2] + "&field=" + arr[1],
                 success: function (data) {
                     $('.ajax').html($('.ajax input').val());
                     $('.ajax').removeClass('ajax');
                 }
             });
         }
     });

     $('#editbox').live('blur', function () {
         $('.ajax').html($('.ajax input').val());
         $('.ajax').removeClass('ajax');
     });
 });

5 个答案:

答案 0 :(得分:0)

您可能希望使用select()而不是focus()。

答案 1 :(得分:0)

我稍微修改了你的脚本。

http://jsfiddle.net/dKn4W/

问题是点击事件从#editbox输入冒泡,所以$('#editbox')。。focus();在每次点击时执行,以防止文本选择。

修改你的代码

        $('td.edit').click(function(e){
            var $target = $(e.target);
            if($target.is('#editbox')){
                return;
            }
            ///// rest of code
        }

答案 2 :(得分:0)

尝试使用.select()功能。这用于选择可编辑输入元素中的文本。

在您的情况下,请尝试添加

$('#editbox').select();

以下

$('#editbox ').focus();

希望这一点。

答案 3 :(得分:0)

您需要停止点击事件从#editbox传播到td.edit。尝试添加:

$("td.edit").on("click", "#editbox", function(e) { e.stopPropagation(); });

答案 4 :(得分:0)

请使用此代码

$('td.edit').click(function(e){
            var $target = $(e.target);
            if($target.is('#editbox')){
                return;
            }

        }