首页 > 解决方案 > 页面加载时如何附加动态输入字段?

问题描述

我已经尝试过这种策略->

<script type="text/javascript">
$(document).ready(function(){
    var countPos=0;
    var add_button=$('#add_position');
    var wrapper=$('#position_fields');
    window.console && console.log('Document ready called');
   //When the user clicks on the add button then It inserts these input fields
    $(add_button).click(function(event){
        // http://api.jquery.com/event.preventdefault/
        event.preventDefault();
        if ( countPos >=9 ) {
            alert("Maximum of nine position entries exceeded");
            return;
        }
        countPos++;
        window.console && console.log("Adding position "+countPos);
        $(wrapper).append(
            '<div id="position'+countPos+'"> \
        <p>Year: <input type="text" name="year'+countPos+'" value="" /> \
        <input type="button" value="-" \
            onclick="$(\'#position'+countPos+'\').remove();return false;"></p> \
        <textarea name="desc'+countPos+'" rows="8" cols="80"></textarea>\
        </div>');
    });

});

这是我的 html 段->

<div class="container">
<h1>Ashiful Islam Prince's Resume Registry</h1>


<h1>Editing Profile for UMSI</h1>
<?php
if(isset($_SESSION['profile_error'])) {
$error = $_SESSION['profile_error'];
 unset($_SESSION["profile_error"]);


 echo '<span class="text-danger">';


   echo $error;


   echo '</span>';
}
?>
<form method="post">
<p>First Name:
    <input type="text" name="first_name" value="<?php
    echo $firstName;
    ?>"
      ></p><br>

<p>Last Name:
    <input type="text" name="last_name" value="<?php
    echo $lastName;
    ?>"</p>

<p>Email:
    <input type="text" name="email" value="<?php
    echo $Email;
    ?>"</p><br>
<span class="text-danger">
    <?php
    if(isset($email_sign_error))
        echo $email_sign_error;

    ?>
</span>


<p>Headline:<br/>
    <input type="text" name="headline" value="<?php
    echo $Headline;
    ?>"</p>


<p>Summary:<br/>
    <textarea name="summary" rows="8" cols="80">
        <?php
        echo $Summary;

        ?>
    </textarea>
<p>Position : <input type="submit"  class="add_position" id="add_position" 
name="addPosition" value="+">

<div class="position_fields" id="position_fields">

</div>


<p>
    <input type="submit" value="Save" name="btn" class="btn btn-primary">
    <input type="submit" name="cancel" value="Cancel">
</p>
</form>
</div>
</div>
</div>

我遇到的问题:在上面的这个程序中,当用户单击添加按钮时,我可以显示输入字段。但是我想在页面加载时显示这些字段意味着不点击我想打印这些字段的添加按钮。我怎样才能去我的目的地?

这是我从数据库中获取数据的 php 代码:

<?php
try{
//Need to make a connection
$con=new PDO("mysql:host=localhost;dbname=courseraassignment","root","");


$statement=$con->prepare("select * from position 
                   where profile_id=:profile_id");
$statement->execute(array(
    ':profile_id'=>$_REQUEST['profile_id']
));
foreach($statement as $row){
   echo $row['year'];
   echo $row['description'];
   echo "<br>";
}
}catch(PDOException $e){
echo "error".$e->getMessage();
}
 ?>

从这段代码中,我从位置表中获取年份和描述,并希望在页面加载时将这些值显示给这些输入字段。

标签: phphtmljquery

解决方案


下面的代码在页面加载时创建字段并且当用户单击添加按钮时尝试这个如果有任何错误让我知道

<script type="text/javascript">
$(document).ready(function(){
    var countPos=0;
    var add_button=$('#add_position');
    var wrapper=$('#position_fields');
    window.console && console.log('Document ready called');
   //When the user clicks on the add button then It inserts these input fields
    function addField(event){
       event.preventDefault();
        if ( countPos >=9 ) {
            alert("Maximum of nine position entries exceeded");
            return;
        }
        countPos++;
        window.console && console.log("Adding position "+countPos);
        $(wrapper).append(
            '<div id="position'+countPos+'"> \
        <p>Year: <input type="text" name="year'+countPos+'" value="" /> \
        <input type="button" value="-" \
            onclick="$(\'#position'+countPos+'\').remove();return false;"></p> \
        <textarea name="desc'+countPos+'" rows="8" cols="80"></textarea>\
        </div>');
    }
    $(add_button).click(function(event){
        addField();
    });

    addField();

}); 

和html会是这样的

<div class="container">
<h1>Ashiful Islam Prince's Resume Registry</h1>


<h1>Editing Profile for UMSI</h1>
<?php
if(isset($_SESSION['profile_error'])) {
$error = $_SESSION['profile_error'];
 unset($_SESSION["profile_error"]);


 echo '<span class="text-danger">';


   echo $error;


   echo '</span>';
}
?>
<form method="post">
<p>First Name:
    <input type="text" name="first_name" value="<?php
    echo $firstName;
    ?>"
      ></p><br>

<p>Last Name:
    <input type="text" name="last_name" value="<?php
    echo $lastName;
    ?>"</p>

<p>Email:
    <input type="text" name="email" value="<?php
    echo $Email;
    ?>"</p><br>
<span class="text-danger">
    <?php
    if(isset($email_sign_error))
        echo $email_sign_error;

    ?>
</span>


<p>Headline:<br/>
    <input type="text" name="headline" value="<?php
    echo $Headline;
    ?>"</p>


<p>Summary:<br/>
    <textarea name="summary" rows="8" cols="80">
        <?php
        echo $Summary;

        ?>
    </textarea>
<p>Position : <input type="button"  class="add_position" id="add_position" 
name="addPosition" value="+">

<div class="position_fields" id="position_fields">
     <?php foreach($your_data as $count => $data){ ?>
           <div id="position'+count+'">
               <p>Year: <input type="text" name="year'+count+'" value="" />
                 <input type="button" value="-" onclick="$(\'#position'+count+'\').remove();return false;"></p>
                   <textarea name="desc'+count+'" rows="8" cols="80"></textarea>
           </div>
        <?php } ?>
</div>


<p>
    <input type="submit" value="Save" name="btn" class="btn btn-primary">
    <input type="submit" name="cancel" value="Cancel">
</p>
</form>
</div>
</div>
</div>

推荐阅读