jQuery: Выберите параметры — добавление цен

#jquery #select

#jquery #выберите

Вопрос:

Я новичок в программировании. У меня вопрос из двух частей:

1. Допустим, у меня есть:

 #html    
<style>
    <option value="1"> Red Box </option>
    <option value="2"> Green Box </option>
    <option value="3"> Blue Box </option>
</style>
<style>
    <option value="4"> Red Circle</option>
    <option value="5"> Green Circle</option>
    <option value="6"> Blue Circle</option>
</style>
  

Каков наилучший способ присвоить каждой опции значение в долларах, чтобы значение можно было вычислить в jQuery?

2. Как можно использовать jQuery для создания этих результатов: * Цены выбранных опций суммируются и отображаются пользователю * Пользователь может выбрать «отправить параметры»

Комментарии:

1. Нет, я не студент. Я работаю в сфере маркетинга в юридической сфере, но создание веб-сайтов стало моим хобби. Значения box amp; circle являются произвольными, чтобы упростить вопрос.

Ответ №1:

Цены выбранных опций суммируются и показываются пользователю

Просто, просто сделайте:

   var total = 0;
  $('select').each(function() {
      // Convert val from string to integer, so it isn't cocantenated.
      total  = parseInt($(this).val());
  });
 alert('Total is: '   total);
  

Пользователь может выбрать «отправить параметры»

Ну, обычно вам нужна кнопка отправки:

 <input type="submit" value="Submit" name="submit"/>
  

Затем вы можете либо позволить браузеру обрабатывать отправку значений формы. Для этого каждый select или любой элемент формы должен быть дочерним по отношению к форме. Вы также определяете, куда форма должна отправлять / получать значения

 <form name="shapes" action="/form-handler.php" method="post">
  <!-- your select elements here !-->
</form>
  

Каждый элемент в вашей форме ДОЛЖЕН иметь атрибут name, если вы хотите, чтобы он был представлен правильно.

Если вы хотите, чтобы jQuery отправлял форму через ajax, вы можете использовать красоту serialize

  $('[name=shapes]').serialize();
  

Это преобразует значения формы в строку запроса для публикации. Смотрите http://api.jquery.com/serialize / для получения подробной информации об этой функции.

Комментарии:

1. Спасибо за ответ, Гэри. Вы потеряли меня в ajax =). Я тоже попробую ваш метод. Мне нравится, что вы объяснили свой код. Это поможет мне и другим, подобным мне, отказаться от копирования и вставки.

2. Я попробовал это, и это работает. Спасибо. Можете ли вы сказать мне, как я мог бы добавить «общее количество» в разметку вместо предупреждения?

3. Вместо предупреждения просто сделайте: $('<div>').html('Total is: ' total).appendTo('body') — конечно, вы можете изменить место его размещения, в этом примере оно размещено в теле (в конце).

Ответ №2:

Лучший способ присвоить каждой опции значение в долларах — это использовать ключ value тега option. Это выглядело бы примерно так:

 #html    
<select> <!-- I'm assuming you meant a select-tag here not a style-tag -->
    <option value="5"> Red Box </option>
    <option value="8"> Green Box </option>
    <option value="1"> Blue Box </option>
</select>
<select>
    <option value="6"> Red Circle</option>
    <option value="3"> Green Circle</option>
    <option value="1"> Blue Circle</option>
</select>
  

Ваш код jQuery может выглядеть следующим образом:

 var total = $('select:first').attr('value')   $('select:last').attr('value');
  

Комментарии:

1. Итак, читая это — в основном в jquery говорится, что «итого» — это сумма от первого значения до последнего значения. Очень круто. Не думал, что это будет так просто.

2. Это не сработает, пока это не покажет Nan , вам нужно будет сделать .val()

3. Пожалуйста, объясните подробнее, Гэри. Я еще не пробовал ничего из этого.

Ответ №3:

Чтобы получить общее:

 <script>
  $(document).ready(function(){
    alert( $('select:first').val()   $('select:last').val() );
  });
</script>
  

Надеюсь, это поможет. Приветствия