0

名などのユーザーアカウント情報を表示するために使用される単純なdivがあります。

<div id="firstNameChange"><?=$firstName?></div>

私はそれを入力要素に変換するために使用されるjqueryコードを持っています:

//execute when nameChange DIV is clicked
        $("#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     
                    $("this .inputbox").focus();

                    //maintain the input when it changes back to a div
                    $("this .inputbox").blur(function(){
                        var value = $(this).val();
                        $("#firstNameChange").text(value);

                    });
                }               
        });

input要素の内容を取得するためにPHP変数を作成しましたが、変数が入力されていません。何らかの理由で、上記で作成したJS入力要素のname値で変数が設定されていません。なぜこれが起こっているのか考えはありますか?

if(isset($_POST['submit'])){
$firstName = $_POST['firstName'];
$sql = "UPDATE `user_accounts` SET `first_name`='$firstName' WHERE email='" . $_SESSION['email'] . "' AND user_id=" . $_SESSION['userID'] ;
$_dbConn->update($sql) or die(mysql_error());
Redirect_To('index.php?page=userProfile');  

}

4

2 に答える 2

2

問題は、これを行うときに入力要素を置き換えることです。

$("#firstNameChange").text(value);

1つの解決策は、HTMLを次のように変更することです。

<div id="firstNameChange"><?=$firstName?></div><input type="hidden" name="firstName" id="firstNameHidden"/>

次に、blur関数で、非表示の入力値を次のようにテキスト入力値に設定します。

$("#firstNameHidden").val( value );
于 2013-01-15T02:54:42.587 に答える
1

なぜあなたはこれをやっている?$( "this .inputbox")。focus();

まず第一に、「この.inputbox」はそもそも意味がありません。

 $(inputbox).focus();

 //maintain the input when it changes back to a div
 $(inputbox).blur(function(){
     var value = $(this).val();
     $("#firstNameChange").text(value);
 });

また、$(this).html(inputbox);を実行すると気づきますか。DIVのすべてのコンテンツを新しく作成された入力要素に置き換えますか?だから、あなた<?=$firstName?>はその時点でなくなっています。

于 2013-01-15T02:51:32.790 に答える