Search code examples
javascripthtmlformscarouselejs

How to submit information in a form from an Image in a Carousel


I'm making a fifa style html where two players have to choose a team.

I'm using 2 carousels with all the teams as images and I want the selected images (teams) to be stored as information in a Form to be used later to show certain players, how could I do it?

I used a hidden input but ALL teams get stored in the form instead of the active one.

This is my current code of one of the Carousels:

<div class="row team-container">
    <div id="carouselExampleInterval" class="carousel slide col-3 team-box" data-interval="false">
      <div class="carousel-inner">
        <div class="carousel-item active">
          <img name='idTeam' src="/images/Select1.png" class="d-block w-100" value='1'>
          <input id="idTeam" name='idTeamH' type="hidden" value="1">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select2.png" class="d-block w-100" value='2'>
          <input id="idTeam" name='idTeamH' type="hidden" value="2">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select3.png" class="d-block w-100" value='3'>
          <input id="idTeam" name='idTeamH' type="hidden" value="3">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select4.png" class="d-block w-100" value='4'>
          <input id="idTeam" name='idTeamH' type="hidden" value="4">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select5.png" class="d-block w-100" value='5'>
          <input id="idTeam" name='idTeamH' type="hidden" value="5">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select6.png" class="d-block w-100" value='6'>
          <input id="idTeam" name='idTeamH' type="hidden" value="6">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select7.png" class="d-block w-100" value='7'>
          <input id="idTeam" name='idTeamH' type="hidden" value="7">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select8.png" class="d-block w-100" value='8'>
          <input id="idTeam" name='idTeamH' type="hidden" value="8">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select9.png" class="d-block w-100" value='9'>
          <input id="idTeam" name='idTeamH' type="hidden" value="9">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select10.png" class="d-block w-100" value='10'>
          <input id="idTeam" name='idTeamH' type="hidden" value="10">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select11.png" class="d-block w-100" value='11'>
          <input id="idTeam" name='idTeamH' type="hidden" value="11">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select12.png" class="d-block w-100" value='12'>
          <input id="idTeam" name='idTeamH' type="hidden" value="12">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select13.png" class="d-block w-100" value='13'>
          <input id="idTeam" name='idTeamH' type="hidden" value="13">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select14.png" class="d-block w-100" value='14'>
          <input id="idTeam" name='idTeamH' type="hidden" value="14">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select15.png" class="d-block w-100" value='15'>
          <input id="idTeam" name='idTeamH' type="hidden" value="15">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select16.png" class="d-block w-100" value='16'>
          <input id="idTeam" name='idTeamH' type="hidden" value="16">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select17.png" class="d-block w-100" value='17'>
          <input id="idTeam" name='idTeamH' type="hidden" value="17">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select18.png" class="d-block w-100" value='18'>
          <input id="idTeam" name='idTeamH' type="hidden" value="18">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select19.png" class="d-block w-100" value='19'>
          <input id="idTeam" name='idTeamH' type="hidden" value="19">
        </div>
        <div class="carousel-item">
          <img name='idTeam' src="/images/Select20.png" class="d-block w-100" value='20'>
          <input id="idTeam" name='idTeamH' type="hidden" value="20">
        </div>
      </div>
      <a class="carousel-control-prev" href="#carouselExampleInterval" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="carousel-control-next" href="#carouselExampleInterval" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>
    </div>

Solution

  • Check out this snippet:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>Test</title>
        <script type="text/javascript">
            function selectPlayer(player_img){
                document.myForm.selected_player.value = player_img.id;
            }
        </script>
    </head>
    <body>
        <div class="row team-container">
            <div id="carouselExampleInterval" class="carousel slide col-3 team-box" data-interval="false">
                <div class="carousel-inner">
                    <form name="myForm">
                        <div class="carousel-item active">
                            <img id='idTeam_1' src="/images/Select1.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_2' src="/images/Select2.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_3' src="/images/Select3.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_4' src="/images/Select4.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_5' src="/images/Select5.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_6' src="/images/Select6.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_7' src="/images/Select7.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_8' src="/images/Select8.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_9' src="/images/Select9.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_10' src="/images/Select10.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_11' src="/images/Select11.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_12' src="/images/Select12.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_13' src="/images/Select13.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_14' src="/images/Select14.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_15' src="/images/Select15.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_16' src="/images/Select16.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_17' src="/images/Select17.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_18' src="/images/Select18.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
                        <div class="carousel-item">
                            <img id='idTeam_19' src="/images/Select19.png" class="d-block w-100 idTeam" onclick="selectPlayer(this);">
                        </div>
    
                        <div class="carousel-item">
                            <img id='idTeam_' src="/images/Select20.png" class="d-block w-100 idTeam" value='20' onclick="selectPlayer(this);">
                        </div>
                        <input id="idTeam_20" name='selected_player' type="hidden">
                    </form>
                </div>
                <a class="carousel-control-prev" href="#carouselExampleInterval" role="button" data-slide="prev">
                    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
                    <span class="sr-only">Previous</span>
                </a>
                <a class="carousel-control-next" href="#carouselExampleInterval" role="button" data-slide="next">
                    <span class="carousel-control-next-icon" aria-hidden="true"></span>
                    <span class="sr-only">Next</span>
                </a>
            </div>
        </body>
        </html>

    I have taken following steps to solve problem as well as to improve code:

    1. We need <form> to access our <input type="hidden"> so create form inside <div class="carousel-inner">.
    2. There is just a single peice of information, that is which player is selected, we need single <input type="hidden"> not 20, so removed extra <input type="hidden"> and place it inside <form name="myForm">.
    3. name and value not applies to <img> unless we aren't doing andy image-mapping, so I removed them.
    4. Give unique ids to all <img> elements.
    5. Inside JavaScript created function selectPlayer takes single parameter. We used to pass image through that parameter and store its id inside our <input type="hidden">.
    6. Call our function selectPlayer on clicking of player images and pass the image as parameter.