Установка значения флажка на основе того, что выбрано в списке - PullRequest
0 голосов
/ 01 июля 2010

Я работаю в рамках системы CMS, которая определяет определенные поля, которые можно использовать для создания форм для использования в приложении в PHP.

Функция списка имеет подпись:

function inputBasicList ($id,$value = "",$list = array(), $displayName = NULL, $displayLabel = true)

Я использую это таким образом:

$theinput = new inputBasicList("type",$therecord["paymenttype"],array("Cash"=>"cash","Credit"=>"credit"), "Payment Type");

Аналогично, есть флажок, который имеет подпись:

function inputCheckbox($id,$value = false, $displayName = NULL, $disabled = false, $displayLabel = true)

Я использую его таким образом

$theinput = new inputCheckbox("paid", $therecord["paid"], "Paid");

Что я хотел бы сделать, так это чтобы список был установлен для кредита вместо наличных по умолчанию, чтобы автоматически установить флажок в значение true / флажок.

Я не думаю, что система CMS позволяетспособ сделать это, используя любые встроенные функции, и я с осторожностью добавляю любой javascript.

Это возможно с помощью только PHP?

В противном случае, насколько сложным должен быть JavaScriptсделать такую ​​вещь?

edit:

Сгенерированный HTML из phpBMS форм

<p class="big"><label for="type" class="important">Payment Type</label>
<br />
<select name="type" id="type"  class="important" > 
<option value="cash"  >Cash</option>
<option value="credit"  >Credit</option>
</select>
</p>
<p class="big">
<input type="checkbox" id="paid" name="paid" value="1" class="radiochecks"  /> 
<label id="paidLabel" for="paid" >Paid</label>
</p>

Ответы [ 2 ]

0 голосов
/ 01 июля 2010

Это невозможно сделать только с PHP, потому что PHP работает на вашем сервере.Вам нужен код, который выполняется на клиенте.

Я считаю, что первый параметр $id используется в качестве атрибута id для элементов?Если я не прав, поправьте меня.Если это так, вы можете сделать следующее с помощью библиотеки JavaScript jQuery:

jQuery(function($){
  $('#type').change(function(){
    if ($(this).val() == "credit") {
      $('#paid').attr('checked','checked');
    } else {
      $('#paid').removeAttr('checked');
    }
  });
});

UDPATE BMS использует Mootools, JavaScript должен работать так же, как и в mootools:

window.addEvent('domready', function(){
  $('type').addEvent('change',function(){
    if($(this).get('value') == 'credit') {
      $('paid').set('checked','checked');
    } else {
      $('paid').removeProperty('checked');
    }
  });
});

Я бы рекомендовал использовать версию этого фрагмента для mootools, но для вашего интереса, если вы хотите установить jQuery, вы можете добавить jquery.js в phpbms / common / javascript.Затем вы можете отредактировать phpbms / header.php , чтобы включить это:

после последнего $tempjsarray[] добавьте:

$tempjsarray[] = "common/javascript/jquery.js";

, затем после $phpbms->showJsIncludes(); вам нужновключите это, чтобы jQuery работал без проблем, кроме mootools:

echo '<script type="text/javascript">jQuery.noConflict();</script>';

Если это не работает, вы должны опубликовать, как выглядит вывод html.

0 голосов
/ 01 июля 2010

Это должно быть довольно легко в JavaScript. Вы можете прикрепить прослушиватель событий к функции onchange списка и установить значение флажка в этой функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...