ユーザーの名前を表示する単純な DIV があります。
<div id="firstNameChange" title="Click to edit" style="vertical-align:top; display:inline-block; float:left;"><?=$firstName?></div>
ユーザーがマウスで div をクリックすると、フォームに変わります。
<form method="post" action="" >
<div id="firstNameChange" title="Click to edit" style="vertical-align:top; display:inline-block; float:left;"><?=$firstName?></div>
<input type="hidden" name="firstName" id="firstName" value="<?=$firstName?>"/>
<input type="submit" name="submitFirstName" id="saveFirstName" class="ui-icon ui-icon-disk" style="border:none; display:none; background-color:transparent; float:right; vertical-align:top;" />
</form>
jQuery の場合:
$("#firstNameChange").click(function() {
//check if there are any existing input elements
if ($(this).children('input').length == 0) {
$("#saveFirstName").css("display", "inline");
//variable that contains input HTML to replace
var inputbox = "<input type='text' class='inputbox' name='firstName' value=\""+$(this).text()+"\">";
//insert the HTML intp the div
$(this).html(inputbox);
//automatically give focus to the input box
$(".inputbox").focus();
//maintain the input when it changes back to a div
$(".inputbox").blur(function() {
var value = $(this).val();
$("#firstName").val(value);
$("#firstNameChange").text(value);
});
}
});
問題は、[送信] ボタンがマウスでクリックされたときにのみ、フォームがサーバーにポストバックすることです。ユーザーがキーボードの Enter キーを押しても、ポストバックしません。助言がありますか?