Űrlapmezők másolása

L.Tiny képe

Sziasztok!

Webform modulban szeretném megoldani azt, hogy bizonyos mezőket ne kelljen kétszer kitöltenie a megrendelőnek, pl. ha a számlázási és a postázási cím ugyan az. Ilyenkor egy checkbox kipipálásával átmásolódnak a már egyszer bevitt értékek.

Lehet, hogy van már erre kapcsolódó bejegyzés, de nem találtam, talán rosszul is kerestem.

Köszönöm előre is a segítséget!

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Ariel képe

Ha a form elküldése előtt szeretnéd frissíteni a mező tartalmát, akkor valószínűleg jQueryvel lehetne ezt megvalósítani. Van link a szóban forgó oldalhoz?

0
0
L.Tiny képe

Linket sajnos még nem tudok mutatni, mert az oldal még nem publikus, de a saját honlapunk (www.sikermarketing.hu) ugyan ezt a modult használja, és végül is ott sem lenne haszontalan ez az űrlapmező másolás bizonyos megrendelő formokon.

Milyen infóra lenne szükség?

0
0
L.Tiny képe

Kutakodtam kicsit, és találtam egy javascript kódot, ami másolná az inputok értékét:

<script>
function masolo(f)
{
f.szall_name.value=f.szamla_name.value
// A többit értelemszerűen
}
</script>
<form >
 
<input type="text" name="szamla_name" value="">
 
<input type="button" name="masol" value="Másol" onclick="masolo(this.form)">
 
<input type="text" name="szall_name" value="">
 
</form>

Mivel nem tudok onclick eseményt hozzárendelni a Webform select options checkbox-hoz, ezért úgy próbálkoztam, hogy "Markup" típust használtam, és oda illesztettem be a checkboxot (ill. button-t), elé pedig a scriptet. Naná hogy nem működött...:(

A gond az lehet, hogy a Webform "name" értékét (a kapcsos zárójelek miatt) nem tudja értelmezni a script, gondolom ez szintaktikai probléma.

<script>
function masolo(f)
{
f.submitted[orszag].value=f.submitted[orszag_szla].value
f.submitted[telepules].value=f.submitted[telepules_szla].value
f.submitted[iranyitoszam].value=f.submitted[iranyitoszam_szla].value
f.submitted[kozterulet].value=f.submitted[kozterulet_szla].value
f.submitted[hazszam].value=f.submitted[hazszam_szla].value
}
</script>
<div class="form-item webform-component webform-component-textfield webform-container-inline" id="webform-component-masolas">
  <label for="edit-submitted-hazszam">A számlázási cím azonos a levelezési címmel </label>
<input type="button" name="masol" value="Másol" onclick="masolo(this.form)">
</div>

Nem akarok idekeverni "nemdrupalos" témát, de lehet, hogy egy kis js. módosítással (amihez nem értek) egy hasznos funkcióval lehetne bővíteni egy Drupal modult.

Megköszönném, ha tudnátok segíteni!

0
0
makikaki képe

jQuery-vel megoldható. kb. így szerintem:
A sminked javascriptjébe berakod a köv jQuery-t.
(function($){
$(document).ready(function(){

function nevmasolas() {
var text = $('#edit-submitted-nev').val();
$('#edit-submitted-nev2').val(text);
}

$('#edit-submitted-select-1').bind('change', nevmasolas);
})
})(jQuery);

Ez alapján a webformon tartalmaz két text mezőt ( nev és nev2) valamint 1 checkboxot. Nézzük hogy változik e a checkbox állapota ha igen akkor a nevmasolas funkció a nev értékét név2 be másolja. Persze itt még lehetne vizsgálni hogyha pl. a checkbox nem bekapcsolt akkor pl törölje a nev2-t, stb stb.
Sminkedhez javascriptet úgy tudsz hozzáadni, hogy a smink.info-ba beirod pl scripts[] = javascriptfile.js és létrehozol egy javascriptfile.js file ebbe megy a fenti kód. Természetesen a cache -t üríteni kell hogy a drupal észrevegye (admin/config/development/performance)
Üdv

2
0
L.Tiny képe

Hálás köszönetem Makikaki!:) Jó, hogy leírtad a js hozzáadás menetét, bár ez nekem tiszta volt, de azért így kerek. Nehogy valaki ezen akadjon meg később.
Ha kiveszem a pipát, akkor nem törli a mezőt, de ez legyen a legkevesebb. Így legalább nem kezd el játszadozni a látogató "ki-be kapcsolósdit":)

Mivel nem egy mezőt kell másolni egy másikba, hanem többet, ezért ideírom, hogy néz ki a kód több mező esetén

(function($){
$(document).ready(function(){
 
function nevmasolas() {
var text = $('#edit-submitted-orszag').val();
$('#edit-submitted-orszag-szla').val(text);
var text = $('#edit-submitted-telepules').val();
$('#edit-submitted-telepules-szla').val(text);
var text = $('#edit-submitted-iranyitoszam').val();
$('#edit-submitted-iranyitoszam-szla').val(text);
var text = $('#edit-submitted-kozterulet').val();
$('#edit-submitted-kozterulet-szla').val(text);
var text = $('#edit-submitted-hazszam').val();
$('#edit-submitted-hazszam-szla').val(text);
}
 
$('#edit-submitted-masolas').bind('change', nevmasolas);
})
})(jQuery); 

Gondolom ez banális annak, aki tud jQuery-ül, nekem nem volt az:)

Köszi még egyszer!

0
0
Justice képe

de én se tudok jQuery-ül épp most kóstolgatom. A fenti kódot hová illesztem be? Melyik fájl és mi marad ki, esetleg mik közé kerül?

0
0
L.Tiny képe

A fenti kódot így sehová ne illeszd, csak példaképpen írtam.

A te űrlapodnál megkeresed (Firebug-gal) a másolandó input(ok) azonosítóit, pl. van egy olyanod a postázási címnél, hogy "Ország", ami a kódban valahogy így néz ki:

<div id="webform-component-orszag" class="form-item webform-component webform-component-textfield webform-container-inline">
<label for="edit-submitted-orszag">Ország </label>
<input id="edit-submitted-orszag" class="form-text" type="text" maxlength="128" size="60" value="" name="submitted[orszag]">
</div>

Itt az azonosító, ami neked kell: edit-submitted-orszag

Ezután megkeresed azt az inputot, ahová szeretnéd másolni, azaz a számlázási címnél az "Ország" mezőt:

<div id="webform-component-orszag-szla" class="form-item webform-component webform-component-textfield webform-container-inline">
<label for="edit-submitted-orszag-szla">Ország </label>
<input id="edit-submitted-orszag-szla" class="form-text" type="text" maxlength="128" size="60" value="" name="submitted[orszag-szla]">
</div>

Itt az azonosító a "edit-submitted-orszag-szla"

Kell neked egy checkbox, ami mondjuk legyen "Másolás", és ennek az azonosítója: edit-submitted-masolas.

Most létrehozol egy javascript doksit, bemásolod ezt a kódot:

function($){
$(document).ready(function(){
 
function nevmasolas() {
var text = $('#edit-submitted-orszag').val();
$('#edit-submitted-orszag-szla').val(text);
}
 
$('#edit-submitted-masolas').bind('change', nevmasolas);
})
})(jQuery); 

Persze a checkboxot a két ominózus mező közé kell tenni, és ertelem szerűen lehet több input mezőt is másolni.

A .js fájlt felmásolod a sminked könyvtárába, és a továbbiakat úgy csinálod ahogy azt fentebb Makikaki leírta.

0
0
pp képe

Bár ez így most működik, és igazából nem jelent problémát, de abban a pillanatban, hogy lesz egy ajaxos űrlapelemed, máris számos problémával fogsz szembenézni.

Javaslom átolvasásra a következő dokumentációt:

http://drupal.org/node/171213#behaviors

pp

1
0
L.Tiny képe

Erre nem is gondoltam. Köszi PP!

0
0