2012-06-05 105 views

回答

1

你可以你喜歡Jeditable一個插件或執行類似以下的定製解決方案:

HTML

<label for="email">Email:</label> 
<div id="email">[email protected]</div> 
<a href="#" id="changeEmail" data-target="email">change</a> 

JS

// Switch to Input // 
$('#changeEmail').bind('click', function(e){ 

    // Prevent Switch if Already Input // 
    if ($(this).get(0).tagName != 'input') { 
     var $target = $('#'+$(this).data('target')); // Get Target Element 
     var val = $target.text(); // Get Current Target Value 

     // Swap Elements // 
     $target.replaceWith('<input id="email" type="text" value="'+val+'" />'); 

     // Hide Change // 
     $('#changeEmail').hide(); 
    } 
}); 

// Switch to Div // 
$(document).delegate('#email', 'blur', function(){ 

    // Prevent Switch if Input is Empty // 
    if ($(this).val() != ''){ 
     $(this).replaceWith('<div id="email">'+$(this).val()+'</div>'); 
     $('#changeEmail').show(); 
    } else { 
     $('#changeEmail').hide(); 
    } 
}); 

UPDATED DEMO HERE

我希望這有助於!

+0

這太棒了!但是,您能否提供一些更改以使默認輸入可用?然後在輸入一些數據後將其保存爲目標元素?非常感謝!它可以工作,但是如何才能更好地隱藏更改按鈕,直到電子郵件未輸入? –

+0

@RooticalV。看看更新後的答案/演示。 – dSquared

+0

再次感謝,但請你能說爲什麼.changeEmail不會隱藏在我的例子中? http://jsfiddle.net/n9BkM/7/ –

1

像這樣的東西? <span>[email protected]</span><a href="#" onclick="var value = $(this).prev().text();$(this).prev().hide().after('<input type=text name=email value="'+value+'">')">Change</a>

1
$("#changelink").click(function(){ 
    $("#emaildiv").text($("#inputarea").val()) 
}) 
+0

我不知道你的HTML,所以我彌補元素 –