Изменение значения скрытого поля - PullRequest
2 голосов
/ 02 декабря 2011

Я пытаюсь изменить значение скрытого поля из нескольких полей со списком.

Вот пример, я хочу создать значение скрытого поля name="myNumbers" с тремя предыдущимивыбрать элементы, разделенные |.

Как я могу это сделать?с помощью jQuery изменив .val() или .attr() или, может быть, с простой переменной в PHP?

<select name="element1">
  <option value="">Select One</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option selected value="3">3</option>
  <option value="4">4</option>
</select>    
<select name="element2">
  <option selected value="">Select One</option>
  <option value="1">1</option>
  <option selected value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select>    
<select name="element2">
  <option selected value="">Select One</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option selected value="4">4</option>
</select>

<input type="hidden" name="myNumbers" value="3|2|4"> 

Ответы [ 6 ]

2 голосов
/ 02 декабря 2011

Это будет делать то, что вы хотите ...

$(function(){
  var str = $('element1').val() + '|' + $('element2').val() + '|' + $('element3').val()
  $("[name='myNumbers']").val(str)
})

РЕДАКТИРОВАТЬ

Более полное решение, которое будет повторяться для каждого элемента выбора на странице

$(function(){
    $('select').change(function(e){
        var myNumbers = [];
        $('select').each(function(){
          myNumbers.push($(this).val());
        })
        $("[name='myNumbers']").val(myNumbers.join('|'));
    });
});
0 голосов
/ 02 декабря 2011
0 голосов
/ 02 декабря 2011

Если вы хотите установить его один раз во время загрузки страницы, имеет смысл сделать это в php (см. Ответы выше).

Если вы хотите сделать это всякий раз, когда пользователь меняетодин из селекторов, тогда вы захотите использовать javascript (один из хороших способов - jQuery), чтобы сделать это в ответ на событие onChange для любого из этих селектов.отправлено, вы также можете просто использовать javascript (в частности, jQuery), чтобы сделать это как часть общей проверки формы для события onsubmit.

Если вы хотите, чтобы это произошло непосредственно перед использованием значений формы длясохраните что-нибудь в своей базе данных, снова вы сделаете это в php, как только пользователь выберет что-то и нажмете «Отправить».Но тогда вам совсем не нужно скрытое значение, вы можете просто создать его в php после отправки формы.

0 голосов
/ 02 декабря 2011
var select = document.getElementById('#element1');
var index = select.selectedIndex;

С помощью этого кода вы можете создать строку для скрытого ввода

0 голосов
/ 02 декабря 2011

Вы должны будете использовать javascript, так как php запускается на стороне сервера, поэтому перед загрузкой страницы или после ее отправки.

В тексте: вам нужно будет захватить change событияполя выбора, сгенерируйте вашу строку и поместите эту строку в скрытый элемент.

Непроверенный код:

$("select").change(function(){
  var desired_value = $("[name='element1']").val() + "|" + $("[name='element2']").val() + "|" + $("[name='element3']").val();
  $("[name='myNumbers']").val(desired_value);
});
0 голосов
/ 02 декабря 2011

Вы должны иметь функцию onChange для каждого раскрывающегося списка, который вызывает функцию updateMyNumbers

function updateMyNumbers() { 
   $("#myNumbers#").val(("#element1").val() +"|"+("#element2").val()+"|"+("#element3").val());
}
...