JQuery show message when one parameter is selected twice

I have a form with one simple text text, and another option is a drop-down list. So my markup is like this

 <div id="form-wrap" style="width:500px; margin: 0 auto;">
    <table>
      <tr>
        <th width="55%">Service Name</th>
        <th width="35%">From Price</th>
        <th width="10%"></th>
      </tr>
          <tr id="template">
            <td id="example" width="55%">
              <select name="service-name" id="service-name" style="width:230px;">
                <option value="" selected>--select--</option>
                <option value="service-1">service-1</option>
                <option value="service-2">service-2</option>
                <option value="service-3">service-3</option>
                <option value="service-4">service-4</option>
              </select>
            </td>
            <td width="45%"><input type="text" name="from-price" id="from-price" /></td>
            <td width="10%"><input type="button" id="remove" value="remove row" /></td>
          </tr>
    </table>
    <input type="button" value="+ Add Row" id="add-row" />
  </div>

In the form, I have a button called Add row. Therefore, when someone clicks on him, he will add another row, as well as another button as a delete, which will delete the row with the selected row of the button. JQuery code is like this

<script type="text/javascript">
  jQuery(document).ready(function() {
    id = 0;
    var template = jQuery('#template');
    jQuery('#add-row').click(function() {
      var row = jQuery(template).clone();
      var templateSelectedIndex = template.find("select")[0].selectedIndex;
      template.find('input:text').val("");
      row.attr('id','row_'+(++id));
      row.find('#remove').show();
      row.find("select")[0].selectedIndex = templateSelectedIndex;
      template.after(row);
    });
    jQuery('#form-wrap').on('click','#remove',function() {
      jQuery(this).closest('tr').remove();
    });

});

Here it works fine. Here is the working script link

http://jsfiddle.net/NewUserFiddle/LT7gM/

But in this I want another additional option. You can see that I have an option, for example

 <select name="service-name" id="service-name" style="width:230px;">
  <option value="" selected>--select--</option>
  <option value="service-1">service-1</option>
  <option value="service-2">service-2</option>
  <option value="service-3">service-3</option>
  <option value="service-4">service-4</option>
</select>

, , - (lets say Service1), (here it is Service1 as Service1 has been selected in previous row), , , , - , ? . . ?

+4
4

Try:

jQuery('#add-row').click(function () {
    var row = jQuery(template).clone();
    var templateSelectedIndex = template.find("select")[0].selectedIndex;
    template.find('input:text').val("");
    row.attr('id', 'row_' + (++id));
    row.find('#remove').show();
    row.find("select")[0].selectedIndex = templateSelectedIndex;
    template.after(row);
    $("#template").find("select:first option:first").prop("selected","selected");
});

DEMO .

+1

...

if $( select#service_1 ) exists

    alert("already added")

else

    add new select box

end if

, , jquery .

+1

, , , , . , -1 .

To do this, you can attach an event listener to each element, iterate over all the inputs of the selection and make sure that no duplicates are found. This is the code I compiled:

jQuery('#form-wrap').on('change', 'select',function(event) {
    var services = {};
    var valid = true;
    $('#form-wrap select').each(function(index, element) {
        if (services[element.selectedIndex])
            valid = false;

        if (element.selectedIndex != 0)
            services[element.selectedIndex] = true;
    });

    if (!valid)
    {
        alert('Sorry, that service has already been selected');
        this.selectedIndex = 0;
    }
});

and here is a working violin

+1
source

Perhaps an if statement with an event listener.

Sort of; if Service 1, serve Service1 as Service1, if so = Biggity bam!

Below you can get in the right direction.

  if (Service1) init();
        else addEventListener(Event.yourstuffhere, init);
    }
0
source

All Articles