使用jquery输入的输入的奇怪行为

时间:2012-06-22 12:43:00

标签: javascript jquery

我有一个带输入的表单,Jquery将一个特定的输入(url输入)表单输入链接,但我有两个url输入,HTML ID是 url0 url1 ,当我想要编辑第一个输入/ url0时,url1的输入变为可见,并且对url1进行了更改而不是url0,当点击输入时,它会生成url1的值与url0相同,你可以看到我的意思here - jsfiddle

非常感谢

确切的步骤:

  1. 表格带输入
  2. 两个网址输入url0 / url1
  3. onload它们是链接,但在HTML上有隐藏输入,点击激活输入,因此可以编辑
  4. 点击输入后再次转换为链接
  5. 问题这两个输入(url0 / url1)混淆并在编辑时产生奇怪的行为。请查看上面的链接以查看

2 个答案:

答案 0 :(得分:1)

奇怪的行为与你处理事件的方式有关

例如

$('#url0,#url1').val($(this).text()).show().focus();

在任一链接上单击即可打开两个输入。

您需要在输入和链接之间进行引用并对其进行维护,或者从链接到输入和返回动态更改它。

p.s并不认为几天后我会看到完全相同的代码:P

答案 1 :(得分:1)

请参阅jsFiddle here

这是修改过的JS,当你点击链接时可以正常工作 -

$('.a0 a').click(function(e){
    e.preventDefault();
    $(this).parent().parent().find('input').val($(this).text()).show().focus();
    $(this).parent().hide();
})

$('#url0, #url1').each(
    function(index, element){
        $(element).blur(function(){
            $(this).hide().prev().show().find('a').html(this.value);
    })
    }    
);

当您点击链接所在的div - jsFiddle

时,以下情况有效
$('.a0').click(function(e){
    e.preventDefault();
    $(this).parent().find('input').val($(this).find('a').text()).show().focus();
    $(this).hide();
})

$('#url0, #url1').each(
    function(index, element){
        $(element).blur(function(){
            $(this).hide().prev().show().find('a').html(this.value);
    })
    }    
);